猿问

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

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

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

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


翻翻过去那场雪
浏览 1429回答 2
2回答

慕桂英3389331

应该是理解有误我开了两个Gateway$gateway = new Gateway("Websocket://0.0.0.0:8282");$gateway = new Gateway("Websocket://0.0.0.0:8283");用两个页面App1,App2 去连接websocketvar 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文件配置问题
随时随地看视频慕课网APP
我要回答