2017-02-12 34 views
0

我試圖按節點向我的mqtt服務器發送數據數組。向mqtt節點發送數據數組js

我有一個接收函數工作,但我不能讓它在另一種方式工作。

var message = new Array(); 
    message[0] = 108; 
    message[1] = 11; 
    client.publish("/topic", message, { 
      retain: false, 
      qos: 0 
     }); 

,但我得到

[ERROR] TypeError: invalid data 

我不知道我怎麼也得聲明數組是能夠填補所有的數據併發送。在我recevie功能我得到的消息變量作爲自變量,我可以讀它像一個數組:消息[X] ...

回答

1

MQTT支持BufferString

使用類型數組,你必須把它轉換緩衝 你可以使用這個新公共管理模塊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")); 
+0

謝謝你的人,它的工作! – user1298272