节点 - 红色发送二进制

时间:2017-03-09 03:49:11

标签: javascript node.js sockets node-red

在询问Node-Red设置的一些建议后,我刚刚向IoT介绍了我。我有一段将数据发送到Web套接字的javascript代码。它发送的代码格式为HEX,并发送到Web套接字。

我正在尝试使用node-red复制此内容,我在确定用于发送数据的节点时遇到了一些麻烦。

Vanilla Javascript:

function connectToSocket() {

    // Try to connect to the socket
    try {

        // Create our socket connection
        connection = new WebSocket('ws://' + gatewayIP + ':8000');
        connection.binaryType = "arraybuffer";

        // Failed to  create the socket connection  
    } catch (e) {

        // Log error message
        logMessage('Failed to connect to socket');
        return;

    }

}

connection.send('\x02\x00\x01\x04\x26\x2D');

enter image description here

我已经尝试将此作为字符串和json对象发送为msg.payload,但它没有像我期望的那样触发设备,例如当我在浏览器中运行普通的JS函数时。

发送此十六进制字符串的适当格式是什么?

1 个答案:

答案 0 :(得分:3)

您要发送的是缓冲区,此时注入节点无法生成缓冲区。最简单的方法是在inject和WebSocket Out节点之间插入一个函数节点。

函数节点应包含以下内容:

msg.payload = Buffer.from("\x02\x00\x01\x04\x26\x2D");
return msg;

这会将有效负载交换为具有正确值的缓冲区。

编辑: 对于NodeJS 0.10.x,你应该使用像NodeJS 4.x中引入的Buffer.from()这样的东西:

msg.payload = new Buffer("\x02\x00\x01\x04\x26\x2D");
return msg;