Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

AlessandroCursoli's avatar

laravel websocket "Failed to connect to 127.0.0.1 port 6001" on docker

Hi, I'm building an app that must have a real time chat and i don't want to use the pusher api. I'm using docker-compose as dev enviroment :

version: '3.9'

services:
  #php
  php:
    build: 
      context: .
      target: php
      args:
        - APP_ENV=${APP_ENV}
    environment:
      - APP_ENV=${APP_ENV}
      - CONTAINER_ROLE=app
    working_dir: /var/www
    volumes:
      - ./:/var/www
    ports:
      - 8000:8000
    depends_on:
      - database
      - redis
    networks:
      - shareit
  #websocket
  websocket:
    build: 
      context: .
      target: php
      args:
        - APP_ENV=${APP_ENV}
    environment:
      - APP_ENV=${APP_ENV}
      - CONTAINER_ROLE=websocket
    working_dir: /var/www
    volumes:
      - ./:/var/www
    ports:
      - 6001:6001
    depends_on:
      - database
      - redis
    networks:
      - shareit

  # #soketi
  # soketi:
  #   image: quay.io/soketi/soketi:latest-16-alpine
  #   build: 
  #     context: .
  #     target: php
  #     args:
  #       - APP_ENV=${APP_ENV}
  #   ports:
  #     - 6001:6001
  #     - 9601:9601
  #   environment:
  #     - APP_ENV=${APP_ENV}
  #     - CONTAINER_ROLE=websocket
  #   working_dir: /var/www
  #   volumes:
  #     - ./:/var/www
  #   depends_on:
  #     - database
  #     - redis
  #   networks:
  #     - shareit


  #database
  database:
    image: mysql
    ports:
      - 3306
    environment:
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_PASSWORD=${DB_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - shareit
  #phpmyadmin
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: pma
    links:
      - database
    environment:
      PMA_HOST: database
      PMA_PORT: 3306
      PMA_ARBITRARY: 1
    restart: always
    ports:
      - 8081:80
    networks:
      - shareit
  #redis
  redis:
    image: redis:alpine
    command: redis-server --appendonly yes --requirepass "${REDIS_PASSWORD}" 
    ports:
      - 6379:6379
    networks:
      - shareit
  #queue
  queue:
    build:
      context: .
      target: php
      args:
        - APP_ENV=${APP_ENV}
    environment:
      - APP_ENV=${APP_ENV}
      - CONTAINER_ROLE=queue
    working_dir: /var/www
    volumes:
      - ./:/var/www
    networks:
      - shareit
  #node
  node:
    build: 
      context: .
      target: node
    volumes:
      - ./:/usr/src
      - ./node_modules:/usr/src/node_modules
    tty: true
    networks:
      - shareit

volumes:
  db-data: ~

networks:
  shareit:
    driver: bridge

I'm following a tutorial on how to use laravel webserver or soketi as pusher alternative

broadcasting.php:

        'pusher' => [
            'driver' => 'pusher',
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'app_id' => env('PUSHER_APP_ID'),
            'options' => [
                'cluster' => env('PUSHER_APP_CLUSTER'),
                'encrypted' => false,
                'useTLS' => false,
                'host' => '127.0.0.1',
                'port' => 6001,
                'scheme' => 'http'
            ],

websockets.php:

    'apps' => [
        [
            'id' => env('PUSHER_APP_ID'),
            'name' => env('APP_NAME'),
            'key' => env('PUSHER_APP_KEY'),
            'secret' => env('PUSHER_APP_SECRET'),
            'enable_client_messages' => false,
            'enable_statistics' => true,
        ],
    ],

bootsrap.js:

 window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    wsHost: '127.0.0.1',
    wsPort: 6001,
    enabledTransports: ['ws', 'wss'],
    forceTLS:false,
    disableStats:false,
    encrypted: false,
    cluster:'eu',
});

The connection is ok, but when i try to send an event i get this error (i'm using the laravel-websocket debug page):

Pusher error: cURL error 7: Failed to connect to 127.0.0.1 port 6001: Connection refused (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://127.0.0.1:6001/apps/1567724/events?

what am i doing wrong?

0 likes
1 reply
AlessandroCursoli's avatar
Level 1

I have solved the issue, for anyone that might encounter this problem:

in the .env laravel file instead of

PUSHER_HOST = 

or

PUSHER_HOST = 127.0.0.1

when using docker-compose you must use the container name so:

PUSHER_HOST = websocket

the same if you are using a database container

DATABASE = database

I hope this helps anyone :)

5 likes

Please or to participate in this conversation.