[英]Laravel Echo and Laravel Echo server and socket: Distinguish join and leave events in server side
我正在为移动应用程序构建 Web 服务。 我需要知道哪些移动用户在线。 我通过 Laravel echo-laravel echo server-socket io 和 redis 实现了这个。 一切正常,客户端通过在线渠道监听事件。
问题是,离开和加入事件在客户端,而当用户离开频道时,我需要从存储在Redis的列表中删除它,实际上我需要知道哪个加入或离开发生在服务器端不是客户端,以便能够更新 Redis 中的在线用户。
我怎样才能做到这一点?
如果服务器端有返回在线用户的here
方法的任何实现,它可能会起作用,实际上我可以将我的列表与here
进行比较以获取最新更新。
当用户发生事件时,如果该用户已存在于我的 Redis 列表中,则显然是离开事件,因为用户在任何时候都只能在线一次,如果该用户不存在于列表中,所以它必须是一个连接,因为如果它已经在列表中,没有人可以加入。
提前致谢。
您应该使用Presence Channels来实现此功能。
观看此 Laracast 第 8 集视频,您可以使用离线用户列表调整那里的示例。
我建议使用 channel here
将在线用户的user.id
推送到participants
数组列表中, joining
,如视频所示leaving
钩子。
在输出完整的users
列表时,您可以使用包含检查他们是否在线。
const participants = [4, 34, 57, 70]
for (user of users) {
if( participants.includes(user.id) ) {
// The user is online, Set an online style or something
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.