使用MQTT.js发送压缩的JSON

时间:2016-10-14 16:15:22

标签: javascript json gzip mqtt inflate

我尝试使用MQTT从浏览器向python服务器发送压缩的JSON。 这就是我压缩原始对象的方法(使用gzip-js)

...
if(opt.compression){
    msg = new Uint8Array(gzip.zip(msg, compressionOptions));
}
MQTTclient.publish(topic, msg);
...

但我收到错误:

  

script.js:65 TypeError:string.charCodeAt不是函数(...)

     

EventEmitter.emit @ events.js:77

     

sendPacket @ client.js:51

     

...

如果我尝试将消息发布为标准类型数组,则会发生同样的情况。 发送压缩消息的唯一方法是对其进行编码,但后来我在python端遇到了问题。

1 个答案:

答案 0 :(得分:0)

我通过发布一个实际的"缓冲区"而不是类型化的数组。 这是我的解决方法:

...
if(opt.compression){
    msg = toBuffer(gzip.zip(msg, compressionOptions));
}
MQTTclient.publish(topic, msg);
...

我使用了typedarray-to-buffer模块。