微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关闭单节点服务器连接将全部关闭

如何解决关闭单节点服务器连接将全部关闭

我几乎没有对Stack Overflow提出任何问题,但是这个问题超出了我的范围。我想我缺少一些基本的知识,因为我对Node服务器还很陌生。

我们的应用程序非常基础。服务器应该接收少量的文本行(数据),合并并解析它们,一旦关闭连接(数据发送结束),它将数据发送到api。

var net = require('net');
var fs = require('fs');
const axios = require('axios')

const server = new net.Server();
server.listen(PORT,IP);

server.on("connection",client => {
    client.write("Hello\n");
    console.log('connected');
    
    let received = "";
    client.on("data",data => {
       received += data
       console.log("Partial data is: " + data);
    });

    client.on("close",() => {
        received = received.toString('utf8');
        fs.appendFile('log.txt',received,function (err) {});

        received = received.replace(/(?:\r\n|\r|\n)/g,"||");
        axios.post(APIADDRESS,{data: received});
        console.log('Full data is: '+ {data: received});
    });
});

要发送数据,我只是使用netcat运行ncnetcat ipaddress port,这不是问题。连接正常,收到状态消息。

问题是-一旦我从两个不同的SSh服务器打开两个或多个连接,就会发生奇怪的事情。我可以逐行发送。服务器会为他们两个都报告“部分数据”调试,而不会出现问题。 但是,一旦我关闭其中一个连接(ctrl + c),它们都会都关闭。 最后,仅接收来自手动关闭的连接的数据。似乎来自另一个ssh服务器上一个单独的nc部分的另一个似乎从未到达client.on("close")部分。它只是无缘无故地终止了。

有什么想法吗?我什至不知道从哪里开始。

//编辑 刚刚从我的电脑和一些使用单独的SSH服务器的ssh移动应用程序中对其进行了测试。在任何设备上发送ctrl + c后,它都会关闭所有客户端的连接。

///忘了提及我正在运行pm2以保持服务器正常运行。一旦我手动打开脚本,而忽略了pm2,它就可以正常工作。奇怪的。这是由于PM2造成的。

enter image description here

解决方法

我想您已将Putty配置为“如果可能,共享SSH连接”。根据某些文档,这样做时:

使用此模式时,连接到给定服务器的第一个PuTTY变为“上游”,这意味着它是管理实际SSH连接的那个。所有后续重复使用该连接的PuTTY都称为“下游”:它们根本不连接到真实服务器,而是通过本地进程间通信方法连接到上游PuTTY。

因此,如果您按Ctrl + C管理实际共享连接的PuTTY会话,则它们都会失去连接。

您大概可以在客户端或服务器端禁用此共享连接功能,因为必须同时启用两者才能进行共享。

,

以后再来的人。

如果您使用的是启用了--watch的 pm2 ,并且文本日志文件与主服务器脚本位于同一文件夹中,这就是它在单个客户端后断开连接的原因断开连接。它只是检测到日志已更改。

我没面子,甚至都不好笑。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。