如何解决关闭单节点服务器连接将全部关闭
我几乎没有对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
运行nc
或netcat ipaddress port
,这不是问题。连接正常,收到状态消息。
问题是-一旦我从两个不同的SSh服务器打开两个或多个连接,就会发生奇怪的事情。我可以逐行发送。服务器会为他们两个都报告“部分数据”调试,而不会出现问题。
但是,一旦我关闭其中一个连接(ctrl + c),它们都会都关闭。
最后,仅接收来自手动关闭的连接的数据。似乎来自另一个ssh服务器上一个单独的nc
部分的另一个似乎从未到达client.on("close")
部分。它只是无缘无故地终止了。
有什么想法吗?我什至不知道从哪里开始。
//编辑 刚刚从我的电脑和一些使用单独的SSH服务器的ssh移动应用程序中对其进行了测试。在任何设备上发送ctrl + c后,它都会关闭所有客户端的连接。
///忘了提及我正在运行pm2以保持服务器正常运行。一旦我手动打开脚本,而忽略了pm2,它就可以正常工作。奇怪的。这是由于PM2造成的。
解决方法
我想您已将Putty配置为“如果可能,共享SSH连接”。根据某些文档,这样做时:
使用此模式时,连接到给定服务器的第一个PuTTY变为“上游”,这意味着它是管理实际SSH连接的那个。所有后续重复使用该连接的PuTTY都称为“下游”:它们根本不连接到真实服务器,而是通过本地进程间通信方法连接到上游PuTTY。
因此,如果您按Ctrl + C管理实际共享连接的PuTTY会话,则它们都会失去连接。
您大概可以在客户端或服务器端禁用此共享连接功能,因为必须同时启用两者才能进行共享。
,以后再来的人。
如果您使用的是启用了--watch的 pm2 ,并且文本日志文件与主服务器脚本位于同一文件夹中,这就是它在单个客户端后断开连接的原因断开连接。它只是检测到日志已更改。
我没面子,甚至都不好笑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。