Javascript AWS EC2客户端/服务器可以';无法通过节点HTTP服务器进行通信
我有两个AWS EC2实例。服务器和客户端节点JS应用程序 在本地,我的代码运行良好。 但是在AWS上,客户端只需在一段时间后关闭(如30秒),而没有任何警告/异常(由于某些原因,它无法找到并连接到服务器) 两个AWS实例都在运行:Windows Server 2016 Base 两个AWS实例都有自己的Serrate“AWS安全组”。为了确保我没有阻止两个安全组当前允许的任何内容: “任何IP的所有流量”-输入和输出流量 这两个实例在AWS中运行在同一个“可用性区域” 服务器正在侦听主机:“0.0.0.0”,端口:4080。 客户端尝试在端口4080连接到服务器的IP。我已尝试连接到所有可能的选项,例如: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
解决方案:我在运行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() {
...
});