Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点模式中的sokect客户端数据处理_Node.js_Sockets_Events - Fatal编程技术网

Node.js 节点模式中的sokect客户端数据处理

Node.js 节点模式中的sokect客户端数据处理,node.js,sockets,events,Node.js,Sockets,Events,因此,我在typescript和node中构建了一个vscode扩展,我有一个python应用程序,它使用socket将数据发送到localhost 8080,我像这样捕捉它: export default async function getSock(port, adress, dataOld): Promise<void> { let server = net.createServer(function (socket) { socket.setEncoding('

因此,我在typescript和node中构建了一个vscode扩展,我有一个python应用程序,它使用socket将数据发送到localhost 8080,我像这样捕捉它:

export default async function getSock(port, adress, dataOld): Promise<void> { 


let server = net.createServer(function (socket) {
    socket.setEncoding('binary');

    socket.on('data', async function (data) {
        console.log('client send:' + data);
        let m = port
        new **UI**(data);
        server.close()
    });
    
    socket.on('error', function (exception) {
        console.log('socket error:' + exception);
        socket.end();

    });

    socket.on('close', function (data) {
        console.log('client close:' + data);

    });

    socket.on('end', function() { 
        console.log('disconnected from server');
        server.close()

     });
     
})

server.listen({port: port, adress: adress});
}

导出默认异步函数getSock(端口、地址、数据旧):Promise{
让服务器=net.createServer(函数(套接字){
setEncoding('binary');
socket.on('data',异步函数(data){
log('客户端发送:'+数据);
设m=端口
新**用户界面**(数据);
server.close()
});
socket.on('error',函数(异常){
log('套接字错误:'+异常);
socket.end();
});
socket.on('close',函数(数据){
console.log('客户端关闭:'+数据);
});
socket.on('end',function(){
log('从服务器断开连接');
server.close()
});
})
侦听({port:port,address:address});
}

现在我需要一种机制,如果监听5秒钟,没有数据从套接字传递出去,我会停止监听并调用“newUI(dataOld)”

你说“但是当套接字中没有数据”时,我不清楚你的意思是什么?这是怎么发生的?您如何知道何时停止等待实际数据到达,而改为使用
dataOld
?此外,假设一个传入
数据
事件包是一整套数据也是危险的。nodejs中的TCP是一个流,数据可以以任何形式到达。相反,您必须了解自己的协议,并确保您有一个完整的数据段可以处理。第一条评论是我试图回答的,什么样的模式适合知道流是否已准备好数据,如果不发出服务于旧数据的事件,我假设它可能是一个计时器,如果侦听器上没有数据持续5秒,则激活新UI(dataOld),那么在侦听10秒后是否可以停止侦听服务器并使用dataOld调用该类?