// 心跳间隔
$device_gateway->pingInterval = 10;
// 心跳数据
$device_gateway->pingData = '{"type":"ping"}';
//无反应断开次数
$device_gateway->pingNotResponseLimit = 5;
这是我设置的心跳检测,
设备端是收到ping后返回pang.
但是有时(大部分时候正常,服务器也未动过任何改动及操作)服务器端不主动发ping给设备,设备就不返回pang给服务器,造成设备被服务器断开连接。
为什么服务器不发送ping,怎么解决这个不发送的问题?
你怎么知道没有ping。
你可以在服务端抓包看下,是否发送了ping。
如果没发送,说明链接已经断开了
其他数据(我自己写的推送到设备的程序)推送都正常,设备端能收到。
或者设备端向服务器端发送数据,如:get_list,服务器onMessage后sendToCurrentClient,设备端也正常收到数据。(get_list为不定时发送,大约1小时以上的)
//设备请求广告列表
case 'get_list':
$res = self::adList($message_data);
Gateway::sendToCurrentClient($res);
return;
这是我判断的方法。
我接下来试试服务端抓包。
这些不代表服务端没发送ping啊