我正在尝试按节点将数据数组发送到我的mqtt服务器。
我有一个接收功能正在工作但我无法以其他方式工作。
var message = new Array();
message[0] = 108;
message[1] = 11;
client.publish("/topic", message, {
retain: false,
qos: 0
});
但是我得到了
[ERROR] TypeError: invalid data
我不知道如何声明数组能够填充所有数据并发送它。在我的recevie函数中,我将消息变量作为参数获取,我可以像数组一样读取它:message [x] ...
答案 0 :(得分:1)
mqtt支持Buffer
或String
要使用类型化数组,必须将其转换为缓冲区 你可以使用这个npm模块https://www.npmjs.com/package/typedarray-to-buffer
var toBuffer = require('typedarray-to-buffer')
var message = [];
message[0] = 108;
message[1] = 11;
var arr = new Uint8Array(message)
arr = toBuffer(arr)
/*
arr.toString() // '\u0001\u0002\u0003'
arr.readUInt16BE(0) // 258
*/
// arr is a buffer now!
client.publish("/topic", arr, {
retain: false,
qos: 0
}, function(){
console.log("message published"));