NodeJS 从网络套接字写入获取响应

Eyz*_*yzi 2 javascript sockets node.js

我正在尝试通过该write功能从特定请求中获得响应。

我通过net模块连接到设备(这是与之通信的唯一方式)。目前,我正在.on('data',function)听取上述设备的回应。我可以通过write我期望收到一行响应的函数发送命令。我该怎么做呢?

当前代码:

server = net.Socket();

// connect to server
server.connect(<port>,<ip>,()=>{
    console.log("Connected to server!");
});

// log data coming from the server
server.on("data",(data)=>{
    console.log(''+data);
});

// send command to server
exports.write = function(command){
    server.write(command+"\r\n");
};
Run Code Online (Sandbox Code Playgroud)

这是一个工作代码。通过向设备发送命令会server.write返回一个现在只出现在终端中的响应。我想在write请求后立即返回该响应。最好在exports.write函数内。

ufx*_*eng 6

callback给你的exports.write函数添加一个参数可以解决你的问题。

exports.write = function(command, callback){
    server.write(command+"\r\n");
    server.on('data', function (data) {
        //this data is a Buffer object
        callback(null, data)
    });

    server.on('error', function (error) {
        callback(error, null)
    });
};
Run Code Online (Sandbox Code Playgroud)

调用你的write函数

var server = require('./serverFilePath')
server.write('callback works', function(error, data){
    console.log('Received: ' + data)
})
Run Code Online (Sandbox Code Playgroud)