amazon-web-services - 无法将客户端连接到 AWS 上的远程套接字

标签 amazon-web-services amazon-ec2 websocket socket.io

我在使用 socket.io 时遇到了新开发人员的问题

我有一个在 AWS EC2 实例上运行的 socket.io 服务器。它是一个在端口 10000 上具有公共(public) IP 地址 (55.55.55.55) 和私有(private) IP 地址 (10.0.1.1) 的单个实例

我启动服务器,然后访问我在另一个 EC2 实例上创建的网站,该实例位于另一个 VPC ( 10.5.1.1/16 ) 和另一个公共(public) IP 地址 100.100.100.100

这是我在这个实例上运行的代码,websocket 的客户端(显示一个简单的聊天测试)

<script>
        const display_panel = document.getElementById('ws');
        const number_of_lines_displayed = document.getElementById('info_lines');

        let socket = io('http://55.55.55.55:10000');

        let line_counter = 0;

        socket.on('test', (msg) => {

            if(line_counter < {{ max_lines }})
            {
                let span = document.createElement('span');
                let text = document.createTextNode(msg);
                let newline = document.createElement('br');

                span.appendChild(text);
                display_panel.insertBefore(newline, display_panel.firstChild);
                display_panel.insertBefore(span, display_panel.firstChild);

                number_of_lines_displayed.innerHTML = 'line(s): ' + line_counter++;
            }
        });
    </script>

然后,我遇到了连接超时。

在服务器端,我已经启动服务器尝试所有可能的解决方案,但我无法在所有情况下连接

  • 10.0.1.1:10000
  • 127.0.0.1:10000
  • 0.0.0.0:10000
  • 55.55.55.55:10000

在最后一种情况下,服务器给我这个错误

 Bugsnag:  Encountered an uncaught error, terminating…
1|test | Error: listen EADDRNOTAVAIL 55.55.55.55:10000
1|test |     at Object._errnoException (util.js:992:11)
1|test |     at _exceptionWithHostPort (util.js:1014:20)
1|test |     at Server.setupListenHandle [as _listen2] (net.js:1338:19)
1|test |     at listenInCluster (net.js:1396:12)
1|test |     at doListen (net.js:1505:7)
1|test |     at _combinedTickCallback (internal/process/next_tick.js:141:11)
1|test |     at process._tickDomainCallback (internal/process/next_tick.js:218:9)
1|test |     at Function.Module.runMain (module.js:695:11)
1|test |     at startup (bootstrap_node.js:191:16)
1|test |     at bootstrap_node.js:612:3

我不知道如何才能让这个东西发挥作用。当我尝试访问公共(public) IP 时,我不需要在 VPC 之间建立桥梁(这将是我最喜欢的解决方案)

Netstat 在所有情况下都会给我这个

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 10.0.1.1:10000          0.0.0.0:*               LISTEN      18132/test.js

本地环境一切正常,因此代码不是问题,看起来主要是网络问题。

感谢您的帮助!

最佳答案

发现问题:我们需要在 EC2 实例上的 AWS 控制台中打开端口。

实例>安全组>入站规则

关于amazon-web-services - 无法将客户端连接到 AWS 上的远程套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53335007/

相关文章:

PayPal IPN 无法到达 EC2 tomcat

javascript - Web 浏览器中的模拟

amazon-web-services - 从不同主机上的另一个容器通过 SSH 连接到 docker 容器

amazon-web-services - 亚马逊重新识别 : How to compare face from one image to multiple images in batch?

amazon-ec2 - 如何在 ec2 中使用 S3FS、FFMPEG 获取视频文件的宽度/高度

javascript - Golang 网络套接字处理程序

.NET 4.5 中的网络套接字

linux - 将 amazon-linux 实例从 PV 转换为 HVM 的最简单方法

node.js - DynamoDB 扫描遗漏了有效项目

database - 在亚马逊 ec2 上运行 perl 脚本