WebSocket на Laravel

WebSocket на Laravel

Запускаем websocket на Laravel с использованием пакета от BeyondCode.

Установка

Laravel WebSockets можно установить через composer:

composer require beyondcode/laravel-websockets

Пакет автоматически зарегистрирует поставщика услуг. В ходе установки могут возникнуть ошибки с версиями пакетов laravel, решение проблемы:

composer require beyondcode/laravel-websockets:* -W

В этот пакет входит миграция для хранения статистической информации во время работы сервера WebSocket. Вы можете опубликовать файл миграции, используя:

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"

Запустите миграцию с помощью:

php artisan migrate

Далее вам необходимо опубликовать файл конфигурации WebSocket:

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"

Запуск

Далее запускаем websocket командой:

php artisan websockets:serve

Сервер запустится на 6001 порт. Чтобы использовать другой пишем так:

php artisan websockets:serve --port=3030

По умолчанию сервер Laravel WebSocket будет прослушивать 0.0.0.0 и разрешать входящие соединения из всех сетей. Если вы хотите ограничить это, вы можете запустить сервер с --host опцией, за которой следует IP-адрес.

php artisan websockets:serve --host=127.0.0.1

Настройка канала связи на сервере

Меняем параметры в .env:

BROADCAST_DRIVER=pusher
...
PUSHER_APP_ID=1
PUSHER_APP_KEY=test-key
PUSHER_APP_SECRET=test-secret
PUSHER_HOST=localhost
PUSHER_PORT=80
PUSHER_SCHEME=http
PUSHER_APP_CLUSTER=chat
PUSHER_ENCRYPTED=true