GatewayWorker搭建了聊天后怎么公用连接做系统消息推送

sxfenglei

GatewayWorker 如何同时做聊天和系统消息推送
查了文档和资料发现大部分都是 GatewayWorker做聊天 web-msg-sender做推送,但是web-msg-sender使用的是phpSocket.io 看了论坛里面说到phpSocket.io能做的GatewayWorker也能做,可是捣腾了3天也没搞定。
GatewayWorker做了聊天正常聊天 在多写一个分支用来推送聊天就失效了!也就是说GatewayWorker怎么做系统推送(不使用phpSocket.io的话)。谢谢!

我是这样做的
1、在Ubuntu上部署了GatewayWorker 局域网IP为
配置 $gateway->lanIp = '192.168.0.110';因为要使用GatewayClient在本地192.168.1.107开发环境开发(基于TP3.2)

----------------------- WORKERMAN -----------------------------
Workerman version:3.3.6          PHP version:7.0.7
------------------------ WORKERS -------------------------------
user          worker                 listen                    processes status
root          YourAppBusinessWorker  none                       4          
root          YourAppGateway         websocket://0.0.0.0:8282   4          
root          Register               text://0.0.0.0:1238        1          
----------------------------------------------------------------
Press Ctrl-C to quit. Start success.

2、在本地window上使用GatewayClient做聊天和系统推送

//TP代码片段   文件:Chat/test.php
 switch($message) {  
        case 'sendMessage':
         //这里发送聊天消息内容
          break;
        case 'notice':  
         //发送系统消息  {‘type’:'notice','data':'这一一个系统消息'}
          Gateway::sendToAll($data);  
          break;
         default:
             echo "unknown message $data";
    }

//监听收到的消息
  socket.onmessage = function(e){  
    var data = eval("("+e.data+")");
      console.info(data);
      switch(data){
          // 服务端ping客户端 心跳
          case 'ping': 
              socket.send('{"type":"ping"}');
              break; 
          // 登录 更新用户列表
          case 'init': 
              $.post('{:U("Chat/bind")}',{client_id:data.client_id},function(data){
                console.log(data);
              });
              break; 
              break;
          // 检测聊天数据
          case 'chatMessage':
            console.log(data.data); 
              break; 
          //通知
          case 'notice':
            $('#content').append(data.data+'<br>');
            console.log(data);
            break;
          default:
              console.error(data);        
      }//switch  
  };// websocket onmessage

  //l聊天
  $('#sendMessage').click(function() {
    var txt = $('#txt').val();
    var login_data = '{"type":"sendMessage","data":"'+txt+'"}';
    console.info(login_data); 
    $.post('{:U("Chat/test")}',{data:login_data},function(data){
      console.log(data);
    });
  }); 

//推送系统消息
  $('#notice').click(function() { 
    var login_data = '{"type":"notice","data":"推送的系统消息"}';
    $.post('{:U("Chat/test")}',{data:login_data},function(data){
      console.log(data);
    }); 
  });
2627 1 0
1个回答

walkor 打赏

GatewayWorker做推送和做聊天通讯流程是一样的。
从你给的信息中看不出来问题,多打打日志看看吧

  • 暂无评论
年代过于久远,无法发表回答
×
🔝