如何配置mosquitto代理以增加与mqtt客户端的断开连接时间?

时间:2018-01-17 22:30:11

标签: mqtt mosquitto paho libmosquitto

mqtt文档解释了keepalive的最大值是18小时12分15秒。

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

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

2 个答案:

答案 0 :(得分:0)

您没有在代理上配置keep alive,它是在客户端配置的。

该值从客户端传递到代理(http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Keep_Alive

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

E.g。对于libmosquitto,您可以在几秒钟内将保持活动值传递给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数据包以保持连接活动。     int keepalive;

答案 1 :(得分:0)

是的,60秒是客户端的默认保持活动时间。但是mosquitto.conf中确实存在一个keepalive_interval,即Mosquitto桥接模式,用于连接多个蚊子经纪人。