首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用mosca MQTT的请求响应模式

使用mosca MQTT的请求响应模式
EN

Stack Overflow用户
提问于 2020-01-24 00:10:56
回答 2查看 3.3K关注 0票数 0

是否有任何方法实现请求-响应模式与mosca MQTT,以“检查答复从客户端和重新发布,如果我没有收到预期的答复在预期的时间”。

我相信这在Mqtt 5中是可能的,但到目前为止,我必须在QoS 1(它支持Mqtt 3.1.1之前)使用Mosca。

我正在寻找一个节点js的解决办法来实现这一点。

EN

回答 2

Stack Overflow用户

发布于 2020-01-26 07:18:12

根据我的注释,您可以使用任何MQTT代理实现请求-响应模式,但是在使用v5之前,您需要自己实现这个模式(或者有一个回复主题和一个消息ID,或者在每个消息中包含一个特定的回复主题)。

因为MQTT 3.11本身并不直接提供此功能,而且MQTT有效负载没有标准格式(只是一些字节!)想出一个通用实现是不可能的(在请求中需要某种类型的唯一id )。这在MQTT v5中通过包含属性 (包括回应主题相关数据 )的能力得到解决。对于早期版本,您需要在有效负载中添加一些额外的信息(使用您选择的任何编码机制)。

有几个堆栈溢出问题可能会提供一些洞察:

其他条款:

下面是几个节点包(注意:这些包已经有一段时间没有更新了,我还没有检查代码):

即使使用MQTT v5,您也需要自己实现空闲超时。如果您使用的是QOS 1/2,那么代理将负责重新发送消息(直到它收到PUBACK/PUBCOMP),因此重发消息可能会适得其反(许多相同的消息在comms链接关闭时排队)

票数 2
EN

Stack Overflow用户

发布于 2020-01-30 15:03:18

我所做的工作流程摘要

  • 为每条消息添加“相关Id”
  • 预期的回复存储在Redis中,作为Request (以相关Id作为键的请求)来比较来自客户端的响应。
  • 如果预期消息等效于预期响应主题和有效负载,则将从Redis中删除该条目。
  • 超时对客户端到服务器的每个响应都使用节点cron作业。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59888811

复制
相关文章

相似问题

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