栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

socket.io如何在多个服务器之间发送消息?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

socket.io如何在多个服务器之间发送消息?

Socket.io默认情况下使用MemoryStore,因此所有连接的客户端都将存储在内存中,这使得(连接到另一个socket.io服务器的)客户端发送和接收事件成为不可能(嗯,不是安静的,稍后再说)。

使所有socket.io服务器接收所有事件的一种方法是,所有服务器都使用redis的pub-
sub。因此,代替使用socket.emit可以发布到Redis。

redis_client = require('redis').createClient();redis_client.publish('channelName', data);

并且所有套接字服务器都通过Redis订阅该通道,并在收到消息后将其发送给与其连接的客户端。

redis_sub = require('redis').createClient();redis_sub.subscribe('channelName', 'moreChannels');redis_sub.on("message", function (channel, message) { socket.emit(channel, message);});

复杂的东西!但是,等等,事实证明您实际上并不需要这种代码来实现目标。Socket.io具有RedisStore,它本质上以一种更好的方式完成了上面的代码应该做的事情,因此您可以像编写单个服务器一样编写Socket.io代码,并且仍然可以通过以下方式传播到其他socket.io服务器Redis。

总结一下,socket.io通过使用redis作为通道而不是内存在多个服务器之间发送消息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号