gatewayworker做的聊天室,多机进行分布式,如a,b两台机器,统一由a机监控,b机的注册地址指向a机,程序都启动及执行都正常,但信息不互通。示例:a1客户端ws连接向a机b1客户端ws连接向b机a,b任意一台服务器向所有client_id发送消息都只能向连接自己的机器发送成功!是否我理解有误,本身就是不支持的,如果需要支持要怎么处理?
2 回答

慕桂英3389331
TA贡献2036条经验 获得超8个赞
应该是理解有误
我开了两个Gateway$gateway = new Gateway("Websocket://0.0.0.0:8282");
$gateway = new Gateway("Websocket://0.0.0.0:8283");
用两个页面App1,App2 去连接websocket
var ws = new WebSocket("ws://127.0.0.1:8282"); ws.onopen = function(evt) { console.log("App1 Connection open ..."); ws.send("This is App1"); }; ws.onmessage = function(evt) { console.log("App1 Received Message: " + evt.data); };
Event.php 中最简单逻辑
public static function onConnect($client_id) { // 向当前client_id发送数据 Gateway::sendToClient($client_id, "Hello $client_id\r\n"); // 向所有人发送 Gateway::sendToAll("$client_id login\r\n"); } public static function onMessage($client_id, $message) { // 向所有人发送 Gateway::sendToAll("$client_id said $message\r\n"); }
在APP1连接服务器的时候,App2可以收到服务器群发的消息,App2得到的输出内容如下:
App2 Received Message: 7f0000010b5400000006 login App2 Received Message: 7f0000010b5400000006 said This is App1
- 2 回答
- 0 关注
- 1428 浏览
添加回答
举报
0/150
提交
取消