我正在为一些客户端(移动,单页应用程序......)编写一些NodeJS应用程序。该应用程序是游戏和社交 - 用户可以有朋友和游戏需要实时共享他们之间的事件。所以我决定使用Socket.io。
如何有效地在用户朋友的连接套接字之间共享事件?一个用户可以与多个客户端连接(因此他有更多连接的套接字)。 使用socket.io“rooms”是不是一个好主意,每个用户都有一个房间,当一些事件发生时,它会被发送到我朋友的每个房间? 如何有效地处理这个?
为了更好的概念,您可以想象它与Facebook墙(或朋友活动的右侧小组)的方式相同。
你会怎么处理它?</ p>
答案 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