是否可以将文件发布到MQTT服务器?

时间:2018-09-01 15:40:36

标签: node.js mqtt

我有一个微型微服务项目,该项目使用NodeJS作为后端,并使用MQTT作为服务之间进行通信的媒体。我有一个服务,该服务想将excel文件发送到另一个服务。 MQTT有什么办法发布文件?

到目前为止,我只设法将其作为 binary-data 发送,但不知道该怎么做,或者有什么方法可以从NodeJS中的二进制数据重新创建文件? >

3 个答案:

答案 0 :(得分:1)

This stackoverflow thread讨论MQTT字节限制。

  

实际主题字符串的长度最多为65536个字节。这是mqtt规范施加的限制,您无法更改。还值得注意的是,该主题是使用utf-8编码的,因此可用的字符数可能少于65536。消息的有效负载限制为268,435,456字节。同样,这是由规范定义的。

如果超出这些限制,则需要将文件分成多个块,并使用Base64算法将其编码为ASCII。恢复后,请确保发送整个文件的哈希值,以检查并确保文件的另一端是一致的。

This article使用Python做类似的事情,以防您想看一些代码。希望对您有帮助!

答案 1 :(得分:1)

文件只是二进制数据,MQTT有效载荷只是二进制数据。

如果您要包含元数据,例如文件名,那么您将不得不提出一种数据格式来对文件名和文件内容进行编码。无论是在发布的主题中,还是通过创建包含文件名和文件内容的数据结构,都可以通过多种方式完成。

答案 2 :(得分:0)

由于mqtt负载有限制,如上面引述的@Fabio Manzano,并且即使从很小的文件中也无法发布二进制数据,我认为我已经通过将其分解为多个块来完成了这项工作(二进制数据)并分别发布。然后在完成发送完最后一个块后再次将它们全部合并。

,然后按照此线程的提示进行操作:

context item

我已经尝试过了,并且成功了。谢谢您的答复。