Paho mqtt on internet disconnect not 运行 callback
Paho mqtt on internet disconnect not running callback
我有这个 mqtt class
class MQTT():
def __init__(self):
# Observer.__init__(self) # DON'T FORGET THIS
self.mqttClient = paho.Client(client_id=constants.MQTT_CLIENT_ID)
self.mqttClient.username_pw_set(username=constants.MQTT_BROKER_USERNAME, password=constants.MQTT_BROKER_PASSWORD)
# assign mqtt event callbacks
self.mqttClient.on_message = self.on_message
self.mqttClient.on_connect = self.on_connect
self.mqttClient.on_disconnect = self.on_disconnect
self.mqttClient.on_socket_close = self.on_disconnect
self.mqttClient.on_log = self.on_log
def on_disconnect(self,client, userdata, rc):
log("MQTT DISCONNECT:",client, userdata, rc)
然后
mqtt = MQTT()
如果我 运行 我的代码可以完美运行,但是当互联网连接丢失时我必须 运行 一些功能。因此,为此我正在使用 on_disconnect
并且在 运行ning 代码之后如果网络没有任何反应。我想在 Internet 连接丢失时回拨给 运行。我们有吗?
on_disconnect
是正确的回调 - 问题是它什么时候被调用?
如果网络连接丢失,您的客户端只会在下次尝试传输时注意到它。因此,如果客户端不打算发布某些内容(或确认在连接断开之前收到的订阅),下一次传输将是 PINGREQ
默认情况下 keepalive
设置为 60
- 这意味着如果在此时间间隔内没有发送其他控制包,您的客户端将每 60 秒发送一个 PINGREQ
。
因此将调用 on_disconnect
回调,只是没有您预期的那么快。尝试降低 keepalive
以改进此
我有这个 mqtt class
class MQTT():
def __init__(self):
# Observer.__init__(self) # DON'T FORGET THIS
self.mqttClient = paho.Client(client_id=constants.MQTT_CLIENT_ID)
self.mqttClient.username_pw_set(username=constants.MQTT_BROKER_USERNAME, password=constants.MQTT_BROKER_PASSWORD)
# assign mqtt event callbacks
self.mqttClient.on_message = self.on_message
self.mqttClient.on_connect = self.on_connect
self.mqttClient.on_disconnect = self.on_disconnect
self.mqttClient.on_socket_close = self.on_disconnect
self.mqttClient.on_log = self.on_log
def on_disconnect(self,client, userdata, rc):
log("MQTT DISCONNECT:",client, userdata, rc)
然后
mqtt = MQTT()
如果我 运行 我的代码可以完美运行,但是当互联网连接丢失时我必须 运行 一些功能。因此,为此我正在使用 on_disconnect
并且在 运行ning 代码之后如果网络没有任何反应。我想在 Internet 连接丢失时回拨给 运行。我们有吗?
on_disconnect
是正确的回调 - 问题是它什么时候被调用?
如果网络连接丢失,您的客户端只会在下次尝试传输时注意到它。因此,如果客户端不打算发布某些内容(或确认在连接断开之前收到的订阅),下一次传输将是 PINGREQ
默认情况下 keepalive
设置为 60
- 这意味着如果在此时间间隔内没有发送其他控制包,您的客户端将每 60 秒发送一个 PINGREQ
。
因此将调用 on_disconnect
回调,只是没有您预期的那么快。尝试降低 keepalive
以改进此