Socket.io - 分享“朋友活动”的设计模式

时间:2014-03-13 20:21:32

标签: node.js sockets design-patterns websocket socket.io

我正在为一些客户端(移动,单页应用程序......)编写一些NodeJS应用程序。该应用程序是游戏和社交 - 用户可以有朋友和游戏需要实时共享他们之间的事件。所以我决定使用Socket.io。

如何有效地在用户朋友的连接套接字之间共享事件?一个用户可以与多个客户端连接(因此他有更多连接的套接字)。 使用socket.io“rooms”是不是一个好主意,每个用户都有一个房间,当一些事件发生时,它会被发送到我朋友的每个房间? 如何有效地处理这个?

为了更好的概念,您可以想象它与Facebook墙(或朋友活动的右侧小组)的方式相同。

你会怎么处理它?<​​/ p>

1 个答案:

答案 0 :(得分:3)

您可以尝试使用socket.io房间解决此任务,但我认为这会因为开销而导致应用程序中断,例如

1000个用户=&gt; equals =&gt; 1000个房间(每个用户1个房间)

那是1000连接,没有人特别听朋友活动。 所以上面的方法似乎不具备可扩展性。

我会尝试不太难实现的发布/订阅模式,你可以使用带有.listenTo的微型库或Backbone,甚至可以使用带有Redis pub / sub的socket.io。

  • 用户可以选择收听或停止收听朋友的活动。
  • 一个用户不会收到大量关于简单朋友活动的通知。

并且列表会继续,具体取决于您的应用程序行为。 一些有趣信息的问题。

What should I be using? Socket.io rooms or Redis pub-sub?

Node.js, Socket.io, Redis pub/sub high volume, low latency difficulties