使用GatewayWorker心跳问题

shanyi

问题描述

我使用的是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");
    }
410 1 0
1个回答

Chance

pingData 可以设置为空,设为空需要客户端发送心跳
https://www.workerman.net/doc/gateway-worker/heartbeat.html

  • shanyi 2023-07-31

    如果客户端不发送心跳会怎么样呀 ,我问硬件那边他说它是单片机同一时间只能干一件事

  • Chance 2023-07-31

    服务端会断开连接

  • shanyi 2023-07-31

    目前我本地用SSCOM 串口工具测试,我设置服务端的心跳为空,客服端不发送心跳。我连接上 我这边测试10分钟 服务端也没有断开连接

  • efnic 2023-08-01

    本地不会断开,真实网络环境下会断。

🔝