mqtt文档解释了keepalive的最大值是18小时12分15秒。
但是如果mosquitto服务器在60秒之前没有收到消息加上30秒的容差(即最大为90秒),那么它将断开客户端的连接。
也就是说,我无法将keepalive配置超过90秒。
答案 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桥接模式,用于连接多个蚊子经纪人。