1,swoole websocket集群如何做到自动轮换,保证可靠性2,swoole websocket server集群中,如何让 server1 的client A 向 server2 的 client B 推送 信息?
7 回答
绝地无双
TA贡献1946条经验 获得超4个赞
首先,感谢各位技术专家提供的答案和思路,?。
实际中我发现原生Swoole对Cluster并不支持,然后研究了蛮久的SwooleDistributed,但是它需要配合Consul,这个配置也是及其麻烦的,最终都放弃了,选择了原生支持Cluster的Workman,支持异步MySQL,异步Redis,暂时项目就是用这个,后期也会继续跟进Swoole对Cluster的支持。
感谢各位!
哈士奇WWW
TA贡献1799条经验 获得超6个赞
谢邀 .
首先说下我自己是没有搞过ws集群的 , 不过有兴趣回答一下 .
一般说来 , 无论是tcp还是ws(当然ws本质上就是tcp)将信息主动push出去 , 靠的是fd文件描述符 . server1的clientA应该是在server1上有自己的文件描述符 , server2的clientB在server2上也有自己的文件描述符 . 这个你应该是明白的 .
我认为你是可以通过某种方案来确定"ClientA的长链接在server1上,clientB的长链接在server2上"的 , 比如你可以通过hash或者uid取余这种方式来确定某个用户将会与某个服务器建立长链接 . 只要这点确定了 , 你就可以将"发送给clientB的消息"也通过这个方式来落到clientB建立长链接的服务器上 , 然后这会儿你就可以很自然的通过这台服务器利用fd将消息push给clientB了.
应该会有更好的解决方案 . 关注.
慕娘9325324
TA贡献1783条经验 获得超4个赞
clientA --> server1 | send msg to clientB
server1 | Find clientB at server2 (hash / radis / broadcast)
server1 | connect server2 as websocket client
server1 --> server2 | msg to clientB from clientA
server2 --> clientB | receive msg from clientA
同服务器消息 和 不同服务器消息 结构上应该是不同的
类似魔兽跨服务器消息
[from A:to B:msg] A(server1) => B(server1)
[from A@1:to B@2:msg] A(server1) => B(server2)
- 7 回答
- 0 关注
- 976 浏览
添加回答
举报
0/150
提交
取消