Javascript AWS EC2客户端/服务器可以';无法通过节点HTTP服务器进行通信

Javascript AWS EC2客户端/服务器可以';无法通过节点HTTP服务器进行通信,javascript,node.js,amazon-web-services,amazon-ec2,client-server,Javascript,Node.js,Amazon Web Services,Amazon Ec2,Client Server,我有两个AWS EC2实例。服务器和客户端节点JS应用程序 在本地,我的代码运行良好。 但是在AWS上,客户端只需在一段时间后关闭(如30秒),而没有任何警告/异常(由于某些原因,它无法找到并连接到服务器) 两个AWS实例都在运行:Windows Server 2016 Base 两个AWS实例都有自己的Serrate“AWS安全组”。为了确保我没有阻止两个安全组当前允许的任何内容: “任何IP的所有流量”-输入和输出流量 这两个实例在AWS中运行在同一个“可用性区域” 服务器正在侦听主机:“0

我有两个AWS EC2实例。服务器和客户端节点JS应用程序

在本地,我的代码运行良好。 但是在AWS上,客户端只需在一段时间后关闭(如30秒),而没有任何警告/异常(由于某些原因,它无法找到并连接到服务器)

两个AWS实例都在运行:Windows Server 2016 Base

两个AWS实例都有自己的Serrate“AWS安全组”。为了确保我没有阻止两个安全组当前允许的任何内容: “任何IP的所有流量”-输入和输出流量

这两个实例在AWS中运行在同一个“可用性区域”

服务器正在侦听主机:“0.0.0.0”,端口:4080。 客户端尝试在端口4080连接到服务器的IP。我已尝试连接到所有可能的选项,例如:

  • 公共DNS(IPv4)
  • IPv4公共IP
  • 弹性IP
  • 私人IP
  • 我甚至不能从客户端或自己的PC ping服务器的IP。我可以通过RDP很好地访问这两个AWS实例

    下面是我的一些代码:

    SERVER.JS CLIENT.JS
    解决方案:我在运行server.js应用程序的服务器中的Windows防火墙中添加了一个自定义TCP规则,该规则允许客户端的IP连接到端口4080。完成。

    您确定允许所有TCP通信进出吗?对于所有端口?是的,所有端口、所有协议、任何IP—在两个安全组上您都在Linux上运行吗?对不起,我忘了提那件事了!否-两个AWS实例都在运行Windows Server 2016 Base。我刚刚意识到-当我禁用客户端和服务器的Windows防火墙时-一切正常!为什么我需要同时设置Windows防火墙规则和AWS“安全组”规则?我猜它需要在防火墙中创建与“安全组”中相同的条目-对吗?
    var server = require('http').createServer();
    var WebSocketServer = require('ws').Server;
    
    var wss = new WebSocketServer({ server: server });
    
    server.on('request', app);
    server.listen(_port, '0.0.0.0', function () { console.log('SERVER STARTED! (listening on port # ' + _port + ')') });
    
    var WebSocket = require('ws');
    var _ws = new WebSocket(THE_SERVER_IP);
    
    _ws.on('open', function open() {
    
                ...
            });
    
            _ws.on('message', function (data, flags) {
    
                ...
            });
    
            _ws.on('close', function close() {
                ...
            });