簡體   English   中英

JS WebSocket無法連接到運行Node.js'ws'包的AWS EC2實例

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM