AWS EC2客户端/服务器无法通过节点HTTP服务器

时间:2017-03-01 19:55:44

标签: javascript node.js amazon-web-services amazon-ec2 client-server

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

本地我的代码工作正常。 但在AWS,客户端只需在一段时间后关闭 - 比如30秒 - 没有任何警告/异常(由于某种原因它无法找到并连接到服务器)

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

两个AWS实例都有自己的“AWS安全组”。只是为了确保我没有阻止安全组目前允许的任何事情: “所有流量到任何IP” - 包括传入和传出流量。

两个实例都在AWS中的“可用区”中运行。

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

  1. 公共DNS(IPv4)
  2. IPv4 Public IP
  3. 弹性IP
  4. 私人IP
  5. 我甚至无法从客户端或我自己的PC上ping服务器的IP。我可以通过RDP访问两个AWS实例。

    以下是我的一些代码:

    SERVER.JS

    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 + ')') });
    

    CLIENT.JS

    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() {
                ...
            });
    

1 个答案:

答案 0 :(得分:0)

解决方案:我将自定义TCP规则添加到运行我的server.js应用程序的服务器中的Windows防火墙 - 这允许客户端的IP连接到端口4080.完成。