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