[英]JS WebSocket won't connect to my AWS EC2 instance running Node.js 'ws' package
我有一个安装了Node.js的Windows EC2实例,以及ws websocket npm软件包。 我的安全组为端口8080设置了自定义TCP连接,以允许所有连接。
我只是试图从浏览器连接到它,但是不能。 我已经尝试了一切,在整个SO和整个Internet上进行了搜索,但是我处于智慧的境地……请帮助!
在服务器上运行的节点脚本:
console.log("init started");
var WebSocket = require("ws");
var server = new WebSocket.Server({
"host" : "private IP of instance", // also tried public IP, but it throws an error
"port" : 8080
});
server.on("connection", function (client){
console.log("client connection open");
client.on("message", function (data){
console.log("client message received");
});
});
server.on("listening", function (){
console.log("server listening");
});
server.on("error", function (e){
console.log("server error", e);
});
console.log("init done");
当我从命令行运行上述代码时,我得到3条日志:“初始化已开始”,“初始化已完成”和“服务器监听”(正如我期望的那样)。 但是,当我从一个简单的HTML页面运行以下内容时,在Firefox中它告诉我“ Firefox无法在ws:// instance:8080 /的公共IP上建立与服务器的连接”。 而且我在服务器上没有更多的日志...
var sock = new WebSocket("ws://public IP of instance:8080/");
sock.onopen = function (){
sock.send("test");
};
我确定这一定与我的EC2实例的配置方式有关,但是我只是不知道可能是什么问题-我已经检查并重新检查了入站规则-端口8080已对所有TCP开放交通! 我想念什么?
注意:我在两个脚本中都尝试使用“ localhost”作为主机,并在服务器本身上运行了测试HTML页面,并且一切正常。 服务器脚本按预期打印了“打开客户端连接”和“接收到客户端消息”。
编辑以添加在服务器脚本中指定实例的公共IP地址时收到的错误消息:
{ Error: listen EADDRNOTAVAIL PUBLICIP:8080
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1334:19)
at listenInCluster (net.js:1392:12)
at doListen (net.js:1501:7)
at _combinedTickCallback (internal/process/next_tick.js:141:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:686:11)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
code: 'EADDRNOTAVAIL',
errno: 'EADDRNOTAVAIL',
syscall: 'listen',
address: 'PUBLICIP',
port: 8080 }
抱歉,我不知道该怎么做,因为我发誓对它进行了三遍检查,但是我的公共IP地址有误。
有时候我讨厌自己o_O
注意:这篇文章很好地解释了公共地址和私有地址之间的关系: https : //stackoverflow.com/a/34712279/859833
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.