Laravel внедряет присутствие друзей (в чате)
У меня возникли проблемы с пониманием того, как дополнить каналы присутствия в приложении Laravel в реальном времени.
Из того, что я прочитал в документации и на многих других интернет-ресурсах об этом, мне нужно только транслироваться на канале присутствия, а клиенты слушать на этом конкретном канале. Кстати, я использую laravel 5.6, а на переднем конце я использую Larvel Echo.
Итак, моя проблема в том, что название канала мне нужно транслировать. Если это что-то общее, например "чат", ВСЕ пользователи в моем приложении будут транслировать на этот канал, и пользователи, которые не имеют ни малейшего представления о том, кто этот пользователь (не друг), получат это уведомление, и они должны обработать эту новую информацию. Конечно, я могу не обновлять пользовательский интерфейс или просто ничего не делать, если пользователя нет в списке его друзей, но это просто бесполезная обработка уведомлений на стороне клиента. На мой взгляд, это не очень хорошая идея.
Вторым вариантом будет трансляция присутствия на уникальное имя канала, такое как "chat-[unique]", где "[unique]" будет что-то вроде идентификатора / хэша зарегистрированного пользователя, но это просто означает, что каждый клиент, который регистрируется в приложении, должен слушайте ВСЕ уведомления о друзьях, поэтому он должен подключиться к chat-5426, chat-9482, chat-4847 и т. д. для всех своих друзей. Опять же, это не кажется эффективным. Но это не все. Список друзей разбит на страницы, поэтому пользователь, после входа в систему, видит только своих первых 20 друзей (если он не прокручивает страницу вниз), и у меня нет ограничений на количество друзей, которое может иметь пользователь - я могу установить ограничение, но тем не менее оно будет быть в тысячах, так что я не думаю, что смогу собрать всех пользователей из БД одним запросом. У меня была идея использовать этот последний метод, чтобы прослушивать каналы каждого пользователя на внешнем интерфейсе, как они есть, разбиты на страницы. Затем, при прокрутке и навигации по округу, если новый пользователь виден в окне просмотра, добавьте его в объект моих друзей (без изменения пользовательского интерфейса) и начните прослушивать его канал присутствия. Я могу видеть, что этот метод довольно легко терпит неудачу.
Тем не менее, я думаю об этом, всегда кажется, что онлайн-присутствие очень расходует ресурсы и почти не стоит его для небольшого стартапа, я не знаю. Я понятия не имею, какой хороший способ был бы осуществить это, поскольку я никогда не делал это прежде. Я был бы очень признателен за любую помощь в этом, потому что все онлайн-ресурсы, которые я нашел по этой теме, реализуют первый метод, о котором я спрашивал, все пользователи подключаются к общему каналу, но это всегда работает в учебниках, потому что у них всего 2-3 пользователя в БД и никто не упоминает, что у пользователя есть друзья. Я не вижу, как это работает в реальном мире, но я могу ошибаться.
заранее спасибо