Всем привет.
В данной статье я расскажу как работать с веб-сокетами на laravel 8 (laravel websockets) на сервере с https.
Эта статья родилась после попыток самостоятельно настроить правильную работу веб-сокетов через https, но в ходе разбора полетов, информации найденной в интернете оказалось недостаточно, поэтому я полностью изучил принцип работы компонентов и решил поделиться знаниями.
Итак, давайте подробнее, какие о том, какие компоненты нам понадобятся и за что они отвечают:
1. Laravel Websockets - сторонний php компонент для laravel написанный на php, именно он реализует функционал веб-сокетов .
2. Pusher PHP - сторонний php компонент, который обеспечивает взаимодействие с HTTP API каналами.
3. Laravel Echo - слушатель событий, он отвечает за отправку передачу данных клиенту.
Настройки данных компонентов хватит для работы сайта по протоколу HTTP, для использования HTTPS необходимо либо настраивать laravel на работу с сертификатом, либо проксировать запросы на локальный порт веб-сокета, именно так в рамках данной статьи мы и поступим, поэтому:
4. Nginx - веб-сервер с проксированием.
Поехали!
Установка
1. Ставим Laravel websockets, всё довольно детально задокументировано на странице компонента: тыц
Устанавливаем при помощи composer:
composer require beyondcode/laravel-websockets
Переходим в корневую директорию нашего проекта и выполняем команду из консоли:
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"
Запускаем миграции:
php artisan migrate
Публикуем конфиг файл веб-сокетов:
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"
Готово, далее ставим pusher php server
2. Используем composer и подключаем компонент:
composer require pusher/pusher-php-server "~3.0"
Отлично! На этом установка окончена, перейдем к настройке.
Настройка
Итак, мы уже определились со списком используемых компонентов и приложений, и установили всё, что требуется для работы (подразумевается, что веб-сервер nginx, php, laravel уже установлены).
Теперь нам необходимо настроить компоненты для правильной работы, итак:
3. Настройка сервера веб-сокетов - config/websockets.php (важно понимать, что и для чего мы настраиваем)
$test = 'test';echo $test;public function foo($data = null){$this->data = data;}