Всем привет.

В данной статье я расскажу как работать с веб-сокетами на 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;}