【问题标题】:AWS Elasticbeanstalk WebSocketsAWS Elasticbeanstalk WebSockets
【发布时间】:2017-01-31 02:26:36
【问题描述】:

我在Amazon Web Services'Elasticbeanstalk(IIS 配置机器)上部署了一个 Asp.Net Web API 项目。除 WebSocket 外,一切正常。为了更轻松地测试 WebSocket,我在 Chrome 上使用了Simple WebSocket Client 扩展。

当我向 API 发出请求时,我收到以下(错误)消息(我在开发者控制台的网络选项卡上观察到此消息):

WebSocket connection to 'ws://my_url' failed: Error during WebSocket handshake: Unexpected response code: 400

我没有找到足够的信息来解决这个问题。

我尝试启用来自Security Groups 下所有端口和所有 IP 的所有入站/出站 TCP 连接。

我尝试创建一个空的 Asp.Net Web API 项目,它只有一个基本的 WebSocket 示例(只是向连接的用户发送一条消息)并将其部署到 AWS 上的全新环境和应用程序。

到目前为止没有任何效果。

我正在使用Microsoft's WebSockets,.NET Framework 4.5.1。

有哪些可能的解决方法?

【问题讨论】:

    标签: asp.net sockets amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    如果您在弹性 beantalk 中使用 AWS Elastic Load Balancer,则 ELB 不支持 Web 套接字,您必须应用解决方法。将您的负载均衡器更改为支持 Websockets 的顶级经典负载均衡器。

    https://aws.amazon.com/blogs/aws/new-aws-application-load-balancer/

    【讨论】:

    • 我正在一步一步地做他们在文章中所做的事情,但我仍然遇到同样的错误。我尝试删除 EC2 的当前负载均衡器,但现在我什至无法访问我的服务器。如何将新的负载均衡器 (ALB - Application Load Balancer) 与现有的 EC2 实例匹配?我还尝试使用 ALB 创建一个新的 EC2,但没有要求我使用负载均衡器,以便我可以选择 ALB。你知道吗?
    • AWS Elastic Load Balancer 实际上支持 Web 套接字,您只需将默认侦听器协议 (HTTP) 更改为 TCP(如已接受的答案和以下 blog 中所建议的那样@
    【解决方案2】:

    我通过在Security GroupsInbound 段上添加All TCP 并使用服务器的IP 地址而不是AWS 创建的名称解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2015-07-29
      • 2014-10-20
      • 2017-09-13
      • 2017-06-14
      • 2018-09-05
      • 2013-06-18
      • 2018-03-05
      • 2014-12-19
      • 2014-03-02
      相关资源
      最近更新 更多