Читая все комментарии, я представил два возможных решения:
Трансляция при входе / выходе пользователя
Это очень простое решение.Вы можете использовать уведомления 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 * позволяет обновлять список пользователей в режиме реального времени.
Примечания
Я никогда не реализовывал эти решения в производственной среде, а просто написал код, чтобы увидеть, каконо работает.поэтому я думаю, что если у других людей будет другая точка зрения или лучший способ объяснить этот процесс, я буду рад обновить мой ответ.