mqtt文档说明keepalive的最大值是18小时12分15秒。
但是,如果 mosquitto 服务器在 60 秒加上 30 秒的容差(即最多 90 秒)之前没有收到消息,它会断开客户端的连接。
也就是说,我无法配置超过 90 秒的 keepalive。
mqtt文档说明keepalive的最大值是18小时12分15秒。
但是,如果 mosquitto 服务器在 60 秒加上 30 秒的容差(即最多 90 秒)之前没有收到消息,它会断开客户端的连接。
也就是说,我无法配置超过 90 秒的 keepalive。
您无需在代理上配置保活,它是在客户端配置的。
该值在从客户端到代理的连接数据包中传递(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 数据包以保持连接活动。内部保活;
是的,60 秒是客户端的默认保活时间。但是在 mosquitto.conf 中确实存在一个 keepalive_interval,即 Mosquitto 桥接模式,用于将多个 mosquitto broker 连接在一起。