socketcluster消息广播实现
2016-11-06 21:31:34 0 举报
SocketCluster是一个Node.js的扩展,用于构建实时应用。它提供了一种简单的方法来处理大量并发连接,通过将连接分片到多个服务器上。在SocketCluster中,消息广播是通过以下步骤实现的: 1. 当客户端连接到服务器时,服务器会将其分配到一个特定的分片(shard)上。 2. 当服务器接收到来自客户端的消息时,它会将该消息发送到与该分片关联的所有服务器上。 3. 其他服务器收到消息后,会将其转发给所有连接到该分片的客户端。 这样,即使客户端只连接到一个服务器,它们也可以接收到其他服务器上的消息。这种方式有效地实现了消息的广播,使得实时应用能够快速地处理大量并发连接。
作者其他创作
大纲/内容
emit:帮我告诉各个brokerClient要广播消息哈渠道:channel数据:xxx
scworker 3
s7
s4
woker进程
结论:我们不能在woker中进行后台接口的轮询并进行publish。因为后台数据一变化,N个woker会发起N次publish,用户会受到N个相同的消息
socket-client
scworker 2
广播sample渠道的消息,是需要s1,s2,s3,s4,s6这几个socket实例,都进行emit调用但是,各个scworker是独立的进程,但还好都是在本机,本机进程之间,可以通过socket进行通信。如果scwoker1要发起一个publish,可以先通知brokerServer,brokerServer找到active的brokerClient,(它们是brokerClient1,brokerClient2,brokerClient3),给它们emit消息。收到消息的brokerClient就去找到sample渠道对应的socket实例列表(s1,s2,s3,s4,s6),它们给用户emit消息。这就完成了sample渠道的广播。
s2
s3
emit:给我广播哈渠道:channel数据:xxx
httpServer
s6
scserver
发起publish 消息
子进程
s8
scworker 1
TCPServer(AF_UNIX 实现本机数据流通信)
socketcluster消息广播实现
s5
s1
brokerClient 3记录了sample[]
brokerServer
s9
0 条评论
下一页