Websockets — Создание системы чата в Laravel

#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 к минимуму, а также отправлять множество других уведомлений в режиме реального времени.