MQTT.js中没有传入数据时如何断开连接
How to disconnect when there is no incoming data in MQTT.js
我用 mqtt.js 实现了一个客户端并订阅了一些频道。
这里如果订阅消息30秒没有进来,想实现自动断线,但是不知道怎么实现。
如果 KeepAlive 设置为 0,则不会抛出 PingRequest 但连接不会终止。我该怎么办?
let option = {
port: config.mqtt_port,
keepalive: 0,
};
mqtt.connect(config.mqtt_addr, option);
连接 keepalive: 0
告诉经纪人他永远不会因为不活动而断开此客户端,并且客户端根本没有发送任何 ping。
使用 keepalive: 20
例如(经纪人在断开客户端之前等待 1.5 * keepalive)似乎也不是去这里的方法,因为它要求您阻止您的客户端发送 ping 以断开连接,并且显然是对 keepalive
机制的可疑滥用
我建议在客户端专门处理这个问题,方法是使用一个计时器,该计时器在 30 秒后触发,其中调用 mqtt.end()
以完全断开您的客户端,并且在 onMessage 回调中计时器应该被重置
我用 mqtt.js 实现了一个客户端并订阅了一些频道。 这里如果订阅消息30秒没有进来,想实现自动断线,但是不知道怎么实现。 如果 KeepAlive 设置为 0,则不会抛出 PingRequest 但连接不会终止。我该怎么办?
let option = {
port: config.mqtt_port,
keepalive: 0,
};
mqtt.connect(config.mqtt_addr, option);
连接 keepalive: 0
告诉经纪人他永远不会因为不活动而断开此客户端,并且客户端根本没有发送任何 ping。
使用 keepalive: 20
例如(经纪人在断开客户端之前等待 1.5 * keepalive)似乎也不是去这里的方法,因为它要求您阻止您的客户端发送 ping 以断开连接,并且显然是对 keepalive
机制的可疑滥用
我建议在客户端专门处理这个问题,方法是使用一个计时器,该计时器在 30 秒后触发,其中调用 mqtt.end()
以完全断开您的客户端,并且在 onMessage 回调中计时器应该被重置