#javascript #laravel #websocket
Вопрос:
Мне нужно создать функцию разговоров (чата) поверх Laravel, используя Pusher.js. Для этого мне понадобились бы веб-сайты для общения в режиме реального времени.
Однако я не уверен в том, каков был бы правильный подход к решению этой проблемы профессиональным образом.
Мой текущий запланированный подход заключается в следующем:
Я планирую иметь несколько каналов толкателя. Каждая Conversation
(модель БД) будет иметь channel_ID
столбец, который будет именем канала толкателя, доступным только Отправителю / Получателю. Интерфейс будет приложением для чата с несколькими показанными разговорами. Как только пользователь нажмет на conversation A
кнопку , он перейдет subscribe
к этому разговору channel_ID
(каналу Pusher). Как только они нажмут на разговор B, это будет unsubscribe
от channel A
и subscribe
до channel B
.
Мои проблемы в подходе заключаются в следующем:
В Laravel каждое широковещательное событие (мое называется message
) имеет функцию broadcastOn()
. Однако я не знаю, как бы я сделал эту работу, скажем, для 10 000 разговоров, у всех которых другое название канала? Я не знаю, оптимально ли это, мне это кажется не слишком хорошим.
Я уже пару дней гуглил в Интернете и просмотрел множество руководств, связанных с веб-сайтами. Многие из них подробно рассказывают о том, как создать public chat
чат со всеми, кто принимает событие, но никто из них на самом деле не вдается в подробности о том, как создать функцию безопасного общения между пользователями.
Комментарии:
1. Звучит неплохо, я проделал этот путь несколько лет назад, может быть, это вам поможет. github.com/robbinbenard/laravel-chat-demo
2. Я лично реализую каналы как один для каждого пользователя. Это позволяет мне свести количество подключений к websocket к минимуму, а также отправлять множество других уведомлений в режиме реального времени.