为了账号安全,请及时绑定邮箱和手机立即绑定

gatewayworker分布式,理论上是不是服务端发消息不管连的哪台都可以收到?

gatewayworker分布式,理论上是不是服务端发消息不管连的哪台都可以收到?

PHP
翻翻过去那场雪 2019-03-04 21:28:10
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


查看完整回答
反对 回复 2019-03-04
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

======使用两台机器也是一样,应该是那几个start文件配置问题

查看完整回答
反对 回复 2019-03-04
  • 2 回答
  • 0 关注
  • 1428 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信