easy-swoole / easyswoole

swoole,easyswoole,swoole framework
https://www.easyswoole.com/
Apache License 2.0
4.74k stars 510 forks source link

我想做到,ws的入口:wss://testwss.tx.com,假如后面有两台机器,M101=192.168.1.101:9501 ; M102=192.168.1.102:9501; #507

Open nx04 opened 3 years ago

nx04 commented 3 years ago

OK 我基本了解。

我想做到,ws的入口:wss://testwss.tx.com,假如后面有两台机器,M101=192.168.1.101:9501 ; M102=192.168.1.102:9501;

(1)、用户王磊,通过入口 wss://testwss.tx.com 注册 到了后端机器 M101; (2)、用户张三,通过入口 wss://testwss.tx.com 注册 到了后端机器 M101; (3)、用户李四,通过入口 wss://testwss.tx.com 注册 到了后端机器 M102;

能实现如下:

(1)所有在线用户可以点对点收发消息; (2)同时也能群发消息、接收别人群发消息。

请问一下,要实现如上所描述的,easyswoole 框架有没有现成的解决方案?

Originally posted by @xiaonian0430 in https://github.com/easy-swoole/easyswoole/issues/506#issuecomment-931145753

sockstack commented 3 years ago

Q:ws的入口:wss://testwss.tx.com,后面有两台机器? A:这个ws服务器前面是需要一个网关的,你可以用nginx来实现。

Q:所有在线用户可以点对点收发消息? A:这是websocket session问题,因为是分布式的,任何一台ws服务器都无法读取到所有用户的fd,这个我已经提到过了,用户登录后,连接的那台服务器,后端需要维护起来的,你可以使用redis维护起来,然后通过消息队列发送消息给对应的ws server。

Q:同时也能群发消息、接收别人群发消息? A:这个和点对点区别就是,点对点需要知道发给那个用户,需要找到用户在那个ws服务器上,广播就不需要,那么只要把群发的消息发给所有的ws服务器,让各自的服务器广播给所有的client即可。

nx04 commented 3 years ago

没有像workerman gateway 那样的现成代码吗?

sockstack commented 3 years ago

没有