如何建立好友列表,在线/离线显示用户状态?

时间:2018-10-27 17:27:15

标签: node.js redis publish-subscribe

我有2个主意。

想法1:

使用Redis将当前在线的人置于集合中。然后,来自客户端的用户将定期发送请求,以发送其所有朋友的状态。服务器将发出sql请求以获取所有朋友,并在redis集中找到他们,如果是,则他们处于联机状态。

想法2:

使用Redis PubSub,当您作为用户在线时,您可以预订所有n个朋友频道。每当用户上线时,他都会在他或她在线的频道上发布。也许正在听的人都会收到通知。

现在我无法确定哪一个更具可扩展性和效率。

1 个答案:

答案 0 :(得分:1)

我认为想法#1 应该是解决方案。 想法2 无法正常工作。

Redis不保留已发布的消息。因此,如果客户端未连接到Redis,则该消息将丢失。当他重新连接到Redis时,他将不会收到以前发布的任何消息。

在您的想法#2 案例中,当用户登录时,他不知道他的朋友是否已经在线。因为他的在线朋友在登录之前已经发布了在线消息,所以他不会收到这些消息。