Пожалуйста, помогите мне прояснить некоторую путаницу.
Laravel позволяет общаться с socket.io, настроив redis:
https://laravel.com/docs/5.4/broadcasting#configuration
Насколько я понимаю, Redis просто хранит данные в памяти что-то похожее на memcached? Это позволяет стороннему программному обеспечению, например socket.io, собирать данные. Это действительно поведение websocket, хотя?
Я знаю, что вы также можете сделать что-то подобное в PHP:
$address = 'localhost';
$port = 5600;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $address, $port);
Почему бы им не выбрать что-то выше, вместо того, чтобы настроить Redis? Вероятно, есть хороший ответ на этот вопрос, но у меня нет такого большого опыта ни с Redis, ни с веб-сокетами.
Любая информация по этому вопросу будет оценена.
Вам нужно подумать о постоянстве соединения. Запрос в Laravel живет только в течение времени, необходимого для получения ответа. После отправки ответа приложение закрывается до тех пор, пока новый запрос не достигнет index.php и Laravel снова загрузится.
Так что на самом деле вы не можете установить постоянное соединение таким образом. Например, Socket.io позволит вам подключиться к услуге и оставаться на связи. В этом основное отличие подхода Rest и Websocket. В интерфейсе отдыха клиент постоянно опрашивает сервер … Так что если у вас есть 1000 клиентов, у вас есть 1000 маленьких надоедливых клиентов, спрашивающих вас, есть ли у вас что-нибудь новое каждые 30 секунд … раздражает в лучшем случае. Но каждый раз, когда они спрашивают, Laravel проходит весь процесс загрузки / выключения … ничто не является постоянным.
Теперь при использовании Socket.io через службу Node каждый клиент будет подключаться и иметь постоянное подключение к экземпляру Node (который является одним постоянным потоком … лучше подходит для этого) … Имея это подключение к 1000 клиентам, клиенты просто слушают сокет для чего-то нового …
Когда запрос Laravel создает событие, представляющее интерес для 1000 клиентов, он просто отправляет информацию в очередь Redis … Экземпляр Node считывает из очереди Redis и может выполнять широковещательную передачу для подключенного клиента 1000, поскольку он поддерживает соединение. ..
Это хорошее использование технологий PHP и Node, поскольку оно подчеркивает сильные стороны обоих …
Надеюсь это поможет…
Других решений пока нет …