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

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

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

呼唤远方 2023-05-25 17:34:59
我想我缺少一些基本的东西,因为我对 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});    });});要发送数据,我只是运行 anetcat或nc使用netcat ipaddress port,这不是问题。连接正常,收到状态消息。问题是——一旦我从两个不同的 SSh 服务器打开两个或多个连接,就会发生一些奇怪的事情。我可以一行接一行地发送就好了。服务器报告“部分数据”调试没有问题,对于他们两个。但是,一旦我关闭其中一个连接 (ctrl+c),它们都会关闭。最后,只收到来自手动关闭连接的数据。另一个来自单独的ncssh 服务器的单独服务器似乎永远无法到达该client.on("close")部分。它只是无缘无故地终止了。有任何想法吗?我什至不知道从哪里开始。//EDIT 刚刚从我的电脑和一些使用单独的 SSH 服务器的 ssh 移动应用程序测试了它。一旦在任何设备上发送 ctrl+c,它就会关闭所有客户端的连接。//忘了说我正在运行 pm2 来保持服务器正常运行。一旦我手动打开脚本,忽略 pm2 - 它工作正常。诡异的。它的发生是因为 PM2.5。
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

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

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

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

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


查看完整回答
反对 回复 2023-05-25
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

给以后来这里的任何人。

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

我不是在打脸,那一点都不好笑。


查看完整回答
反对 回复 2023-05-25
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号