【发布时间】:2018-01-17 22:30:11
【问题描述】:
mqtt文档说明keepalive的最大值是18小时12分15秒。
但是,如果 mosquitto 服务器在 60 秒加上 30 秒的容差(即最多 90 秒)之前没有收到消息,它会断开客户端的连接。
也就是说,我不能配置超过90秒的keepalive。
【问题讨论】:
标签: mqtt mosquitto paho libmosquitto
mqtt文档说明keepalive的最大值是18小时12分15秒。
但是,如果 mosquitto 服务器在 60 秒加上 30 秒的容差(即最多 90 秒)之前没有收到消息,它会断开客户端的连接。
也就是说,我不能配置超过90秒的keepalive。
【问题讨论】:
标签: mqtt mosquitto paho libmosquitto
你没有在broker上配置keep alive,它是在客户端配置的。
该值是从客户端到代理的连接数据包中传递的(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 数据包以保持连接活动。 int 保活;
【讨论】:
是的,60 秒是客户端的默认保活时间。但是在mosquitto.conf中确实存在一个keepalive_interval,即Mosquitto桥接模式,用于将多个mosquitto broker连接在一起。
【讨论】: