为了账号安全,请及时绑定邮箱和手机立即绑定

如何在与客户端连接并行工作的nodejs服务器中创建异步功能?

如何在与客户端连接并行工作的nodejs服务器中创建异步功能?

开满天机 2021-04-06 17:19:23
我正在尝试在客户端服务器应用程序中的线程的nodeJS中进行仿真,该线程以20ms的间隔修改数据以及侦听器和发送器。lisener需要每1秒检查一次来自服务器的数据,发送方在需要时向服务器发送一些信息。我尝试创建服务器和连接客户端以读取数据的setInterval,但是似乎每次我连接客户端时,服务器中的所有数据都会重置,而我的运行功能无法正常工作。function sleep(time) {    return function (callback) {        setTimeout(function(){            console.log(time);            callback();        }, time);    }}var server = net.createServer(function (socket) {    var i = 1;    var totalTime = 1000;    var time = 20;    while (time<totalTime){        run(function*(){            i++;            yield sleep(20);            console.log("modified datas!"+ i);        });        time +=20;    }    socket.write('write to client\r\n');    socket.pipe(socket);});server.listen(1337, '127.0.0.1');setInterval(    function () {        var net = require('net');        var client = "1";        var i = 0;        var client = new net.Socket();        client.connect(1337, '127.0.0.1', function () {            console.log('Connected');            // client.write("Send from client");        });        client.on('data', function (data) {            console.log('DATAS IN CLIENT:::: ' + data);            i++;            if (i == 2)                client.destroy();            // client.destroy(); // kill client after server's response        });        client.on('close', function () {            console.log('Connection closed');        });    },    6000);这是我从现在开始的航站楼。ConnectedDATAS IN CLIENT:::: write to client20modified datas!5020modified datas!5020modified datas!5020modified datas!5020modified datas!50...ConnectedDATAS IN CLIENT:::: write to client20modified datas!5020modified datas!5020modified datas!5020modified datas!5020modified datas!50当我连接新客户端时,我正在寻找继续传输数据的方法ConnectedDATAS IN CLIENT:::: write to client20modified datas!120modified datas!220modified datas!320modified datas!520modified datas!6...ConnectedDATAS IN CLIENT:::: write to client20modified datas!720modified datas!820modified datas!920modified datas!1020modified datas!11
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

run()函数代码未发布,因此很难理解您的代码的实际部分。

但是从您发布的代码i中,服务器中的变量在每个连接上都设置为1,随后在while / run循环中被修改。

如果要保留i套接字连接之间的值,则必须在net.createServer回调之外(在全局范围内)定义它。


查看完整回答
反对 回复 2021-04-22
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信