将数据数组发送到mqtt节点js

时间:2017-02-12 10:27:38

标签: javascript arrays mqtt

我正在尝试按节点将数据数组发送到我的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] ...

1 个答案:

答案 0 :(得分:1)

mqtt支持BufferString

要使用类型化数组,必须将其转换为缓冲区 你可以使用这个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"));