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

Posted

技术标签:

【中文标题】Socket.io - 分享“好友活动”设计模式【英文标题】:Socket.io - sharing "friends activity" design pattern 【发布时间】:2014-04-18 20:39:31 【问题描述】:

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

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

为了更好的概念,您可以将其想象为与 facebook 墙(或右侧朋友活动面板)相同的方式。

你会怎么处理?

【问题讨论】:

这看起来更像是发布/订阅模式.. 你在找什么? 是的,你基本上是对的 【参考方案1】:

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

1000 个用户 => 等于 => 1000 个房间(每个用户 1 个房间)

这是 1000 次连接,没有人特别听朋友的活动。 所以上面的方法似乎已经不可扩展了。

我会尝试发布/订阅模式,这并不难实现,您可以使用微库或 Backbone 和 .listenTo,甚至可以使用 socket.io 和 Redis pub/sub。

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

列表继续取决于您的应用程序行为。 一些包含有趣信息的问题。

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

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

【讨论】:

以上是关于Socket.io - 分享“好友活动”设计模式的主要内容,如果未能解决你的问题,请参考以下文章

简易聊天室代码分享 js+socket.io

简易聊天室代码分享 js+socket.io

简易聊天室代码分享 js+socket.io

通过 Socket.IO 的 WebSocket 设计模式

Socket.IO 入门

感谢有“你”-------socket.io