我有两个主意。
Idea #1:
使用Redis可以将当前在线的用户放到集合中。然后,用户会从客户端定期发送一个请求,为他的所有朋友发送状态。服务器将发出sql请求,以获取所有朋友,并在redis设置中找到他们,如果是,那么他们就在线了。
Idea #2:
使用Redis PubSub,当您作为一个用户在线时,您订阅所有的朋友频道。每当用户上网时,他就会在他或她在线的频道上发布信息。不管是谁听的都会被通知。
现在我看不出哪一个更具有可伸缩性和效率。
发布于 2018-10-29 10:06:32
我认为idea #1应该是解决方案。idea #2无法工作。
不保留公开的信息。因此,如果客户端没有连接到Redis,消息就会丢失。当他重新连接到Redis时,他将不会收到以前发布的任何消息。
在idea #2的例子中,当用户登录时,他不知道他的朋友是否已经在线。因为他的在线朋友在他登录之前就发布了在线信息,而他不会收到这些信息。
https://stackoverflow.com/questions/53024505
复制相似问题