Node.js读取TCPSocket并写入变量

Node.js读取TCPSocket并写入变量,node.js,sockets,tcp,Node.js,Sockets,Tcp,我的代码snipet有点问题。我为一个项目编写了一个学习TCP套接字通信的示例。目前,我可以发送一个TCP套接字并读取答案,但我想在其他软件部分使用答案。为此,我尝试使用变量socketmessage,但这不起作用。有人知道我的问题的答案吗?非常感谢 var net = require('net'); var client = new net.Socket(); var HOST='127.0.0.1'; var PORT='20000'; var MSG="{\"REQUEST\":\"ST

我的代码snipet有点问题。我为一个项目编写了一个学习TCP套接字通信的示例。目前,我可以发送一个TCP套接字并读取答案,但我想在其他软件部分使用答案。为此,我尝试使用变量socketmessage,但这不起作用。有人知道我的问题的答案吗?非常感谢

var net = require('net');
var client = new net.Socket();
var HOST='127.0.0.1';
var PORT='20000';

var MSG="{\"REQUEST\":\"STATUS\"}";    
var socketmessage;

socketmessage=getSocketMessage(MSG);
console.log ("Socket Message: " + socketmessage);

function getSocketMessage(tcpmsg){
  var outData;

  client.connect(PORT, HOST, function() {
    console.log("Client: " + tcpmsg);
    client.write(tcpmsg);
  });

  client.setTimeout(5000, function() {  client.destroy(); });

  client.on('data', function(data) {
    console.log('Server: ' + data);
    outData = data.toString('utf8');
    console.log ("Socketmessage: " + outData);
    client.destroy();
  });

  //Add a 'close' event handler for the client socket
  client.on('close', function() {
    console.log('Connection closed');
  });

  // Add a 'error' event handler for the client socket
  client.on('error', function(error) {
    console.log('Error Connection: ' + error);
  });

  return outData;
}
终端: 套接字消息:未定义 客户端:{“请求”:“状态”}
服务器:{“STATUS”:0.000000}

这是因为函数
getSocketMessage
是异步的。您正在尝试返回收到的消息。函数立即返回,
outData
未定义。它的价值是 设置数据何时从服务器到达。网络I/O发生事件,您使用的事件是
data

client.on('data', function(data) {

接收到的消息只能在
数据的事件处理程序中正确处理。您必须从这里自己调用另一部分。

您可以创建一个读取流,一旦流结束,您可以处理数据

var readStream = fs.createReadStream(path of the file, 'utf8'); //you can use path.join(loc, filename)
 var data = '';
 readStream.on('data', function(chunk:any) {              
                data += chunk;
              }).on('end', function() {
                let gotContent = data.toString(); //
                doWhatEver(gotContent)  //the method is async or promose
              then(function(result){
                console.log(result); //desired output
              })

  });