Пытаюсь разобраться на чем сделать live-чат для сайта, чтобы потом не переделывать.
По ходу поиска постоянно всплывают две вещи: Socket.IO и Pusher.
Socket.IO использовать не хочу - не хочу Node поднимать - хочу сделать на PHP (Laravel).
А с Pusher вообще запутался: в туторах пишут, чтобы я зарегился у них, и какие-то еще тарифы там, а я вообще не понимаю, зачем нужен сторонний сервис (да еще - платный), чтобы передавать данные по сокету между фронтом и бэком - это звучит как какой-то бред.
я правильно понял, что если я использую их сервис, то я по сути делаю связь своего бэка с фронтом через их socks-прокси? Т.е. поток данных идет с фронта к ним на сервер, оттуда на бэк, и обратно так же, да?
Чтобы использовать PusherJS без их сервиса, нужно самому websocket сервер создавать, + redis
Для этого есть пакет laravel-websocket - довольно все легко настраивается и запускается, в связке с Pusher. (в официальной доке все есть)
А если сложно, используй бесплатный тариф Pusher, там 100к сообщений дают, для быстрого старта тебе вполне подойдет. а о своем сервере потом подумаешь, если выйдешь из ограничений.
Евгений, спасибо! Но скажи, я правильно понял, что если я использую их сервис, то я по сути делаю связь своего бэка с фронтом через их socks-прокси? Т.е. поток данных идет с фронта к ним на сервер, оттуда на бэк, и обратно так же, да?
Роми, Нет
В Ларе Pusher используется для broadcast сообщений СО СВОЕГО СЕРВЕРА в браузер пользователей через их сервис - по сути твой бекенд будет слать апи-запросы в Пушер, а пушер уже будет посылать вебсокет-сообщения твоим клиентам.
Двунаправленности по Websocket каналу там нет, разве что в настройках сервиса Pusher можно включить прием сообщений, и дальше по http-хукам на твой сервер.
Роми,
Обычно Pusher используется для ДОСТАВКИ сообщений в реал-тайм-режиме
Для Лайв-чата Пушер тебе прекрасно подойдет
Организуешь Приватный канал между пользователями, с аутентификацией.
Отправляешь чатовое сообщение себе на бекенд, который будет отправлять broadcast сообщение в нужный приватный канал
не, Лара в проекте без вариантов, уже есть)) соответственно в нем есть свои механизмы работы с сокетами, и там часто упоминается этот самый PusherJS - вот я и решил и разобраться о чем вообще речь идет.
а так-то да, в данном случае мне в общем по барабану будет это Laravel-way или не будет )) если найду простое и эффективное решение - конечно использую его, а не то что они рекомендуют.