我使用的是webman,安装的GatewayWorker代码如下:
我使用的tcp服务,硬件那边主动连接我处理一些请求之后返回结果给硬件端。
现在是在硬件跟我请求处理的时候可能时间会大于pingInterval设置的时间,这样我服务器就会给硬件发送ping 的心跳包,但是在处理请求的时候硬件那边说不能接受其它无关数据。就是发送这个ping包不可以。我想问下这样有什么好的解决办法吗,我把pingData设置为空可以吗。如果为空会怎么样。谢谢大家了
'gatewaytcp' => [
'handler' => Gateway::class,
'listen' => 'text://0.0.0.0:7373',
'count' => cpu_count(),
'reloadable' => false,
'constructor' => ['config' => [
'lanIp' => '127.0.0.1',
'startPort' => 3300,
'pingInterval' => 25,
'pingData' => '{"type":"ping"}',
'registerAddress' => '127.0.0.1:1236',
'onConnect' => function(){},
]]
],
public static function onMessage($client_id, $message)
{
Log::notice($message);
// 发送响应给客户端
Gateway::sendToClient($client_id, "okkkkk");
}
pingData 可以设置为空,设为空需要客户端发送心跳
https://www.workerman.net/doc/gateway-worker/heartbeat.html
如果客户端不发送心跳会怎么样呀 ,我问硬件那边他说它是单片机同一时间只能干一件事
服务端会断开连接
目前我本地用SSCOM 串口工具测试,我设置服务端的心跳为空,客服端不发送心跳。我连接上 我这边测试10分钟 服务端也没有断开连接
本地不会断开,真实网络环境下会断。