mqtt 文档解释说,保持连接的最大值为 18 小时 12 分 15 秒。
但是,如果 mosquitto 服务器在 60 秒之前没有收到消息,再加上 30 秒的容差,即最长为 90 秒,则 mosquitto 服务器会断开客户端的连接。
也就是说,我不能配置超过 90 秒的保持连接。
您不必在代理上配置保持活动状态,而是在客户端配置。
该值在连接数据包中从客户端传递到代理 (http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Keep_Alive(
如何配置此项将取决于您使用的客户端库,但大多数库将其作为配置选项。
例如,对于 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;
是的,60 秒是客户端的默认激活时间。但是在mosquitto.conf中确实存在一个keepalive_interval,即Mosquitto桥接模式,该模式用于将多个mosquitto代理连接在一起。