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

发布于 2022-09-11 17:40:31 字数 210 浏览 14 评论 0

gatewayworker做的聊天室,多机进行分布式,如a,b两台机器,统一由a机监控,b机的注册地址指向a机,程序都启动及执行都正常,但信息不互通。
示例:
a1客户端ws连接向a机
b1客户端ws连接向b机

a,b任意一台服务器向所有client_id发送消息都只能向连接自己的机器发送成功!

是否我理解有误,本身就是不支持的,如果需要支持要怎么处理?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

比忠 2022-09-18 17:40:31

应该是理解有误
我开了两个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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文