[英]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.