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 - 分享“好友活动”设计模式的主要内容,如果未能解决你的问题,请参考以下文章