Как получить пользователей онлайн (в режиме реального времени) - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть задача отобразить список онлайн-пользователей, присутствующих на сайте.Мне сказали, что я должен использовать веб-сокеты для этого.Я не знаю, как это реализовать.Я уже установил Pusher и Laravel Echo.Не могли бы вы помочь мне, указав в правильном направлении?Думаю, мне следует послушать момент подключения пользовательского сокета.

1 Ответ

2 голосов
/ 24 сентября 2019

Читая все комментарии, я представил два возможных решения:

Трансляция при входе / выходе пользователя

Это очень простое решение.Вы можете использовать уведомления laravel , которые позволяют реализовать определенную логику широковещания:

  • На этапе входа в систему / выхода из системы создайте уведомление UserLogged[In|Out] и отправьте его на определенный канал
  • Используя Laravel Echo и «несколько строк» ​​javascript, обновите список onlineUsers (например, в VueJs вы можете обновить хранилище Vuex)

Но для этого может потребоваться более сложная логика, и вам, возможно, придется написать много кода, чтобы обновлять список пользователей в Интернете ... Я думаю, что лучше перейти к решению № 2 ...

Использование каналы присутствия

Я думаю, что это лучший способ, так как для него не требуется ничего, кроме хорошей конфигурации Laravel-echo.Для примера я использую Pusher (так как вы просили), но это решение может быть реализовано со всеми широковещательными драйверами Laravel.

  • Когда пользователь входит в систему, просто подпишите его / ее на канал присутствия ( здесь документация Laravel)
  • Используя Laravel Echo, подпишите пользователя наэтот канал
var chatRoom = Echo.join('my.chat.room.id');
  • После подписки используйте метод members.count, чтобы сохранить обновленный список пользователей канала.
  • Использование *Функция 1042 * позволяет обновлять список пользователей в режиме реального времени.

Примечания

Я никогда не реализовывал эти решения в производственной среде, а просто написал код, чтобы увидеть, каконо работает.поэтому я думаю, что если у других людей будет другая точка зрения или лучший способ объяснить этот процесс, я буду рад обновить мой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...