首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mqtt消息未在pub和子客户端的qos 2中发送

mqtt消息未在pub和子客户端的qos 2中发送
EN

Stack Overflow用户
提问于 2018-01-24 04:12:18
回答 1查看 1.4K关注 0票数 0

环境

  • 操作系统: CENTOS 6.5
  • EMQ: 2.3.1

发布客户端为qos 2,子客户端为qos 2,但不要订阅。

子客户

代码语言:javascript
复制
import paho.mqtt.client as mqtt
mqttc = mqtt.Client()
mqttc.connect("localhost", port=1993, keepalive=60)
mqttc.subscribe("TEST", 2)
mqttc.loop_forever()

酒吧客户

代码语言:javascript
复制
for i in xrange(0, 100):
    print 'i:{}'.format(i)
    payload = {'type': 'TEST', 'raw_data':data}
    (rc, mid) = mqttc.publish("TEST", json.dumps(payload), qos=2)
    print 'i:{} rc:{} mid:{}'.format(i, rc, mid)
    time.sleep(0.3)

转换到EMQ的PUB客户端很好。但是EMQ转移到子客户端是失败的。

我将发布客户端的qos更改为1,将消息发送给子客户端。

为什么不在qos 2中传输给子客户端?

EN

回答 1

Stack Overflow用户

发布于 2018-01-24 06:53:06

您需要在发布代码中调用mqttc.loop()函数,以便客户端能够处理QOS 2所需的多部分握手。

例如:

代码语言:javascript
复制
for i in xrange(0, 100):
    print 'i:{}'.format(i)
    payload = {'type': 'TEST', 'raw_data':data}
    (rc, mid) = mqttc.publish("TEST", json.dumps(payload), qos=2)
    mqttc.loop()
    print 'i:{} rc:{} mid:{}'.format(i, rc, mid)
    time.sleep(0.3)

您可能需要查看循环函数的一些可选参数,以控制保持定时正确的https://pypi.python.org/pypi/paho-mqtt/1.1#network-loop所需的时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48414693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档