gatewayworkerman 分布式部署后,个别终端通信异常

1.gatewayworkerman 目前是分布式部署,部署2台,作为通讯中讯服务,然后入口是一台负载均衡服务器,会自动代理链接分发到2台任意一台。
2. 程序逻辑大致如下:
onMessage(clientid,message)
{
(1)记录message消息进入文件日志
logger(message); //产生问题,继续往下看完
(2)判断数据包类型
switch(type)
case login: //登陆
$_SESSION['server'] = $array_data['header']['server'];
$_SESSION['id'] = $array_data['header']['id'];
Gateway::bindUid($client_id,$_SESSION['id']."-".$_SESSION['server']);
case data: //数据转发
$target_uid = $array_data['header']['id']."-".$array_data['header']['server'];
$target_client_id_array = Gateway::getClientIdByUid($target_uid);
$target_client_id = "";
var_dump($target_client_id_array);
if(!empty($target_client_id_array))
{
$array_data['header']["data_direction"] = "response";
$array_data['header']["proxy_client_id"] = $client_id;
$json_string = jsonFormat($array_data);
Gateway::sendToUid($target_uid, $json_string."\n");
}

case "heartbeat": //处理心跳包,每30秒一次,然后原包增加参数返回

if(!isset($array_data['response']))$array_data['response']=$array_data['request'];
if(!isset($array_data['request']))$array_data['request']=$array_data['response'];
$message_data=json_decode($message,true);
$message_data['header']['from_place']="workerman1_proxy_server"; //标记,查原因使用
Gateway::sendToClient($client_id,jsonFormat($message_data)."\n");
break ;
}

现在遇到的问题是:个别客户端在正常接收心跳后某个时间点开始,就会接收不到心跳包,也就是日志上没有记录到logger(message),但是终端却有正常收到服务端的心跳返回数据,包括标记workerman1_proxy_server,实在很诡异,问题相互矛盾。不知道该如何下手去查原因,客户端显示心跳一直正常返回,而服务端却记录不到。
2017-01-07 17:26 添加评论 分享
已邀请:
0

keytehu

赞同来自:

目测有可能是你 logger(message)函数的问题

要回复问题请先登录注册

退出全屏模式 全屏模式 回复