具有AWS和Elastic Beanstalk的Websockets

Mar*_*k11 11 amazon-web-services websocket amazon-elb

我正在尝试让我的websockets使用Amazon Web Service和Elastic Beanstalk(ELB).

我根据以下内容设置了代理协议:http: //docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html

对于所有IP,我已将所有入站流量打开到我的负载均衡器和所有端口上的其他安全组.

我还将负载均衡器listerner保持为端口80上的HTTP.

尝试在端口80上连接时,我的websocket连接出现以下错误:failed:WebSocket握手期间出错:意外的响应代码:400

端口8080上的此错误:失败:连接建立错误:net :: ERR_CONNECTION_REFUSED

会很感激的建议,我已经陷入了困境.

谢谢!

Nos*_*ara 5

配置EC2安全组后,您的应用程序将使用公共IP.

但是你仍然会遇到使用EB URL的问题.要解决此问题,您必须更改EB配置.

  1. 转到EB环境页面
  2. 组态
  3. 在负载平衡部分,将协议从HTTP更改为TCP.

现在您可以单击EB URL.


U.S*_*wap 3

我也在寻找解决此问题的可能方法,但无论您使用哪种平台语言在 AWS EC2 上开发 websocket 程序,这都非常容易,因为在我的例子中使用 Node.js nginx,这应该适用于所有支持平台。

配置安全组

  1. 在 AWS 控制台中,打开 EC2 选项卡。
  2. 选择相关区域并点击安全组。
  3. 如果您已在该区域为您的应用程序启动了 Elastic Beanstalk 实例,则您应该有一个 elasticbeanstalk-default 安全组。
  4. 单击顶部的操作按钮,然后选择编辑入站规则。
  5. 在“类型”列中选择“所有 TCP”,或者您也可以设置一些自定义 TCP 规则来侦听您的 websocket 端口。

    就是这样!

注意:如果出现问题,请检查 Beanstalk 应用程序/环境中的“事件”选项卡并找出问题所在。