3

mqtt文档说明keepalive的最大值是18小时12分15秒。

但是,如果 mosquitto 服务器在 60 秒加上 30 秒的容差(即最多 90 秒)之前没有收到消息,它会断开客户端的连接。

也就是说,我无法配置超过 90 秒的 keepalive。

4

2 回答 2

2

您无需在代理上配置保活,它是在客户端配置的。

该值在从客户端到代理的连接数据包中传递(http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Keep_Alive

您如何配置它取决于您使用的客户端库,但大多数库将其作为配置选项。

例如,对于 libmosquitto,您可以在几秒钟内将 keep alive 值传递给mosquitto_connect函数(https://mosquitto.org/man/libmosquitto-3.html#idm46181896216640

int mosquitto_connect(  mosq,    
    host,    
    port,    
    keepalive);      
struct mosquitto *mosq;
const char *host;
int port;

此外,您通常不必发布消息,如果在保持活动期间没有发送/接收任何消息,客户端库应发送 ping 数据包以保持连接活动。内部保活;

于 2018-01-17T22:36:11.073 回答
1

是的,60 秒是客户端的默认保活时间。但是在 mosquitto.conf 中确实存在一个 keepalive_interval,即 Mosquitto 桥接模式,用于将多个 mosquitto broker 连接在一起。

于 2018-01-18T17:53:29.400 回答