最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

AWS弹性魔豆与ALB:节点的WebSocket超时

IT培训 admin 8浏览 0评论

AWS弹性魔豆与ALB:节点的WebSocket超时

我读过一些博客文章,并跟着他们如何获得节点的WebSockets与AWS弹性魔豆(EB)使用应用负载平衡器(ALB)工作的指令 - 无济于事。

本地(localhost)使用时,应用程序工作正常使用WebSockets。

在EB,应用正确加载和浏览器显示,但WebSocket的不连接,并最终超时。

WebSocket connection to 'ws://tradey-12-hr-dev.ap-northeast-1.elasticbeanstalk:3030/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT

按照该博客文章中,我提出了以下我除了在.ebextensions/enable-websockets.config应用程序:

container_commands:
  enable_websockets:
    command: |
      sed -i '/\s*proxy_set_header\s*Connection/c \
              proxy_set_header Upgrade $http_upgrade;\
              proxy_set_header Connection "upgrade";\
              ' /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf

下面是建立WebSocket的后端代码。使用的端口是在这两个BE和FE 3030

import WebSocket from 'ws'

const setUpWebsocketServer = port => new WebSocket.Server({ port })

export default setUpWebsocketServer

这里是发起握手前端代码:

const target = window.location.host === 'localhost:3000' ? 
  'localhost' : window.location.host

const ws = new WebSocket(`ws://${target}:${PORT}`)

这里是最后100行日志的链接。未产生任何错误:

我希望这是小东西,我的直觉告诉我,我必须允许通过安全组什么的流量端口3030 - 我甚至对所有安全组允许从“任何地方”的交通创造了新的入站交通规则,但这也没有工作(见附件图片)。

感谢您的帮助提前=)

回答如下:

我想到了。 ALB只支持HTTP,TCP没有。真正的WebSockets(例如NPM WS库)运行在TCP,所以他们不会与ALB工作。要么你可以使用带有ELB或回落到长轮询像Socket.io与ALB库真正的WebSockets。我写了一个完整的博客张贴这件事,你可以在这里阅读:https://medium/@binyamin/node-websockets-with-aws-elastic-beanstalk-elastic-load-balancer-elb-or-application-load-6a693b21415a

AWS弹性魔豆与ALB:节点的WebSocket超时

我读过一些博客文章,并跟着他们如何获得节点的WebSockets与AWS弹性魔豆(EB)使用应用负载平衡器(ALB)工作的指令 - 无济于事。

本地(localhost)使用时,应用程序工作正常使用WebSockets。

在EB,应用正确加载和浏览器显示,但WebSocket的不连接,并最终超时。

WebSocket connection to 'ws://tradey-12-hr-dev.ap-northeast-1.elasticbeanstalk:3030/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT

按照该博客文章中,我提出了以下我除了在.ebextensions/enable-websockets.config应用程序:

container_commands:
  enable_websockets:
    command: |
      sed -i '/\s*proxy_set_header\s*Connection/c \
              proxy_set_header Upgrade $http_upgrade;\
              proxy_set_header Connection "upgrade";\
              ' /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf

下面是建立WebSocket的后端代码。使用的端口是在这两个BE和FE 3030

import WebSocket from 'ws'

const setUpWebsocketServer = port => new WebSocket.Server({ port })

export default setUpWebsocketServer

这里是发起握手前端代码:

const target = window.location.host === 'localhost:3000' ? 
  'localhost' : window.location.host

const ws = new WebSocket(`ws://${target}:${PORT}`)

这里是最后100行日志的链接。未产生任何错误:

我希望这是小东西,我的直觉告诉我,我必须允许通过安全组什么的流量端口3030 - 我甚至对所有安全组允许从“任何地方”的交通创造了新的入站交通规则,但这也没有工作(见附件图片)。

感谢您的帮助提前=)

回答如下:

我想到了。 ALB只支持HTTP,TCP没有。真正的WebSockets(例如NPM WS库)运行在TCP,所以他们不会与ALB工作。要么你可以使用带有ELB或回落到长轮询像Socket.io与ALB库真正的WebSockets。我写了一个完整的博客张贴这件事,你可以在这里阅读:https://medium/@binyamin/node-websockets-with-aws-elastic-beanstalk-elastic-load-balancer-elb-or-application-load-6a693b21415a

发布评论

评论列表 (0)

  1. 暂无评论