Cannot connect to Websockets server behind traefik V2

I am trying to setup a websocket server behind traefik. I want my ws server t be accessable from example.com:6001 but i have been struggling getting this to work even with online research. I get a "Host unreachable" error from the websocket client. I know DNS and all that is working correctly as this project also has a web app component that I can access, I am just trying to add a websocket server to the mix

I have created an endpoint in my traefik config

...
- --endpoints.ws.address=:6001
...

I have tried various different traefik configs but none of them have worked. I know the server is working because the server is accessible from within the stack.

websockets:
    image: php:8.0-fpm-alpine
    volumes:
      - ./laravel:/var/www/html:delegated
    working_dir: /var/www/html
    ports:
      - 6001:6001
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.imm_websocket.rule=Host(`example.com`)"
      - "traefik.http.routers.imm_websocket.entrypoints=ws"
      - "traefik.http.services.imm_websocket.loadbalancer.server.port=6001"
    entrypoint: [ 'php', '/var/www/html/artisan', 'websockets:serve' ]
    networks:
      - imm
      - web

I used a similar config for my gitlab servers :22 routing

- "traefik.enable=true"
      - "traefik.tcp.routers.ws-imm-server.rule=HostSNI(`example.com`)"
      - "traefik.tcp.routers.ws-imm-server.entrypoints=ws"
      - "traefik.tcp.routers.ws-imm-server.service=ws-imm-server"
      - "traefik.tcp.services.ws-imm-server.loadbalancer.server.port=6001"

Here is my traefik config

traefik:
        image: traefik:v2.5.4
        restart: always
        container_name: traefik
        ports:
            - "80:80"
            - "8080:8080"
        command:
            - --api.dashboard=true # <= Enabling the dashboard
            - --api.debug=true # <= Enable additional endoints for debugging and profiling
            - --log.level=DEBUG # <= Setting level of logging
            - --providers.docker=true # <= Enable docker as a provider
            - --providers.docker.exposedbydefault=false # <= Don't expose every container
            - --providers.docker.network=web # <= Operate on the 'web' network
            - --entrypoints.web.address=:80 # <= Define entrypoint as port :80
            - --entrypoints.ssh.address=:2222
            - --entrypoints.ws.address=:6001
            - --accesslog=true
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock # <= Volume for docker admin
        networks:
            - web
        labels:
            - "traefik.enable=true"
            - "traefik.http.routers.api.rule=Host(`traefik.example.com`)"
            - "traefik.http.routers.api.service=api@internal"

From the dashboard I can see that the endpoint exists, the service is good, and the router is good

What am I missing here?

You'll have to move your published port from websockets over to traefik too.