2017-02-12 6 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 я получаю переменное сообщение в качестве аргумента, и я могу читать это нравится массив в: сообщении [х] ...

ответ

1

MQTT поддерживает Buffer или String

использовать типизированный массив, вы должны преобразовать его в буфер вы можете использовать этот модуль НПМ 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