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);
});
});
GatewayWorker做推送和做聊天通讯流程是一样的。
从你给的信息中看不出来问题,多打打日志看看吧