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

     2023-03-25     218

关键词:

【中文标题】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

【讨论】:

简易聊天室代码分享js+socket.io(代码片段)

...果如下,前端用一个单html文件。然后后端用node.js和socket.io,也是只用一个单js文件就好。这里可以看下代码的实现逻辑就好,因为来连数据库才能运行的。有需要的话告诉我,我也可以把存取数据库代码逻辑和接... 查看详情

简易聊天室代码分享js+socket.io(代码片段)

...果如下,前端用一个单html文件。然后后端用node.js和socket.io,也是只用一个单js文件就好。这里可以看下代码的实现逻辑就好,因为来连数据库才能运行的。有需要的话告诉我,我也可以把存取数据库代码逻辑和接... 查看详情

简易聊天室代码分享js+socket.io(代码片段)

...果如下,前端用一个单html文件。然后后端用node.js和socket.io,也是只用一个单js文件就好。这里可以看下代码的实现逻辑就好,因为来连数据库才能运行的。有需要的话告诉我,我也可以把存取数据库代码逻辑和接... 查看详情

socket.io调试模式正常

参考技术Awerkzeug开发服务器仍然在内部使用和配置正确socketio。socketio调试模式正常则werkzeug开发服务器仍然在内部使用和配置正确socketio。SocketIO使用debug作为调试工具。这是一个极其简单却非常强大的工具,由TJHolowaychuk开发。 查看详情

设计实时 Web 应用程序(Node.js 和 socket.io)

】设计实时Web应用程序(Node.js和socket.io)【英文标题】:Designingreal-timewebapplication(Node.jsandsocket.io)【发布时间】:2012-05-3008:35:40【问题描述】:我想问一些好的做法。我有一个Node.js(Express)Web服务器和socket.io推送服务器(以防技... 查看详情

如何使 socket.io 在 pm2 集群模式下正常工作?

】如何使socket.io在pm2集群模式下正常工作?【英文标题】:Howtomakesocket.ioworkproperlywithpm2clustermode?【发布时间】:2019-10-0216:55:54【问题描述】:我一直在寻找各种解决方案,但是当我把它们放在一起时,看起来很混乱。我正在尝... 查看详情

感谢有“你”-------socket.io(代码片段)

我此前曾发过一遍文章有关于如何利用node.js+websocket搭建一个简单的多人聊天室有兴趣的朋友可以关注我的技术客栈---涛涛技术客栈。今天学习了websocket的一个框架---socket.io后瞬间感觉神清气爽,顿感从无尽的回调函数中解脱出... 查看详情

使用 socket.io node.js 和传入消息的通知系统的架构实现和设计

】使用socket.ionode.js和传入消息的通知系统的架构实现和设计【英文标题】:ArchitectureImplementationandDesignforaNotificationSystemusingsocket.ionode.jsandincomingmessages【发布时间】:2011-11-0305:11:21【问题描述】:免责声明我之前没有使用过node.js... 查看详情

简易聊天室代码分享js+socket.io(代码片段)

...果如下,前端用一个单html文件。然后后端用node.js和socket.io,也是只用一个单js文件就好。这里可以看下代码的实现逻辑就好,因为来连数据库才能运行的。有需要的话告诉我,我也可以把存取数据库代码逻辑和接... 查看详情

Socket IO 是不是涉及磁盘 IO?

】SocketIO是不是涉及磁盘IO?【英文标题】:DoesSocketIOinvolveDiskIO?SocketIO是否涉及磁盘IO?【发布时间】:2014-12-2112:14:34【问题描述】:如果一个进程通过套接字将数据发送到同一台机器上的另一个进程,那么在传输过程中发生磁... 查看详情

Socket.io 客户端调试?

】Socket.io客户端调试?【英文标题】:Socket.ioclientdebugging?【发布时间】:2012-01-3117:20:55【问题描述】:socket.io是否有客户端调试模式,您可以在其中查看服务器发送给您的所有内容?现在你用下面的代码实现了同样的效果:socke... 查看详情

怎么使用socket.io连接websocket服务

参考技术Asocket.io封装了websocket,同时包含了其它的连接方式,比如Ajax。原因在于不是所有的浏览器都支持websocket,通过socket.io的封装,你不用关心里面用了什么连接方式。你在任何浏览器里都可以使用socket.io来建立异步的连接... 查看详情

socket.io入门原理

1.Socket.IO原理node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一,为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验,于是socket.io诞生。Socket.io将Websocket... 查看详情

使用 express.js 和 socket.io 构建推送通知系统的最佳方法

】使用express.js和socket.io构建推送通知系统的最佳方法【英文标题】:Bestwaytobuildpushnotificationsystemusingexpress.jsandsocket.io【发布时间】:2016-04-0203:49:38【问题描述】:我将express.js和socket.io一起用于实时推送通知系统。工作正常,我... 查看详情

来自 socket.io 的新 cookie 值不起作用?

】来自socket.io的新cookie值不起作用?【英文标题】:newcookievaluefromsocket.iodoesn\'twork?【发布时间】:2012-06-0210:29:28【问题描述】:我尝试将socket.ioid用于多个浏览器窗口/页面。用于使用everyauth的SNS-auth-process,项目基于express。这是... 查看详情

socket.io在nodecluster模式下的解决方案

...地,一个long-polling连接将被首先创建,接着会发送一个websocketupgrading请求,服务端响应该请求,从而建立起websocket通信。流程如下:由于cluster下多个进程间拥有自己独立的运行空间,这就要求从long-polling通信升级到websocket通信... 查看详情

可以将 socket.io 用于域套接字吗?

】可以将socket.io用于域套接字吗?【英文标题】:canoneusesocket.iofordomainsockets?【发布时间】:2014-04-1420:51:23【问题描述】:我正计划使用socket.io将我的node.js客户端连接到使用POSIX套接字的服务器。服务器正在重新设计以支持域套... 查看详情

如何使用 socket.io 存储来自特定用户的套接字资源?

】如何使用socket.io存储来自特定用户的套接字资源?【英文标题】:howdoIstoresocketresourcesfromspecificuserswithsocket.io?【发布时间】:2012-12-2703:02:12【问题描述】:我正在设计一个聊天脚本,我在我的机器上使用不同的浏览器进行测试... 查看详情