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



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代理连接在一起。

最新更新