我目前正在使用redis商店的Socket.IO。
我正在对它使用Room功能。
所以我完全同意房间加入(订阅)
并与Socket.IO一起离开(取消订阅)。
我只看到这一页
http://www.rabbitmq.com/blog/2010/11/12/rabbitmq-nodejs-rabbitjs/
我发现有些人在rabbitMQ中使用Socket.IO。
为什么单独使用Socket.IO还不够好?
在rabbitMQ中使用Socket.IO有什么好的理由吗?
发布于 2012-03-23 15:17:13
SocketIO是浏览器-->服务器传输机制,而RabbitMQ是服务器-->服务器消息总线。
这两者可以一起实现,以创建一个响应性很强的系统,在这样的场景中,用户之旅由一条消息组成,该消息开始于浏览器上,并以某种持久层(比如数据库)结束。
消息将通过socketIO传输到web服务器,然后,web服务器将不再负责持久化消息,而是将其放在Rabbit队列中,并让其他进程负责持久化消息。通过这种方式,web服务器可以自由地返回其web服务职责,并且至关重要的是,减轻了它的负载。
发布于 2012-03-23 21:40:53
看看SockJS http://sockjs.org吧。
这是由RabbitMQ team
除此之外,RabbitMQ团队中还有一个试验性项目,打算为RabbitMQ提供一个SockJS插件。
发布于 2018-04-14 07:04:03
我只是在socket.io中使用rabbitMQ,原因与公认的答案完全不同。这在2012年并不重要,这就是为什么我在这里更新的原因。
我使用的是一个具有可伸缩性和高可用性的聊天应用程序的docker swarm部署。我在集群中运行了聊天应用程序(使用socket.io)的三个副本。swarm集群会自动对传入请求进行负载平衡,并且在任何给定时间,客户端都可能连接到应用程序的三个副本中的任何一个。
在这种情况下,确实需要在应用程序的副本中同步WebSocket响应,因为连接到应用程序的两个不同实例的两个客户端无法获得彼此的消息,因为它们已经连接到不同的WebSockets。
这就是rabbitMQ介入的地方。它同步应用程序的所有实例,并且每当从副本上的WebSocket推送消息时,所有副本都会推送该消息。
该项目的完整细节已提供给here。这是socket.io和rabbitMQ结合使用的一个潜在用例。这适用于在具有高可用性和可伸缩性的分布式环境中使用socket.io的任何应用程序。
https://stackoverflow.com/questions/9824952
复制相似问题