我有一个前端应用程序,尝试在端口3000上连接到socket.io后端。两者均在AWS中实现为微服务。我为socket.io服务设置了ListenerRule
和TargetGroup
,如下所示
TargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
VpcId: !Ref VPC
Port: 3000
Protocol: HTTP
Matcher:
HttpCode: 200-299
HealthCheckIntervalSeconds: 10
HealthCheckPath: /
HealthCheckProtocol: HTTP
HealthCheckTimeoutSeconds: 5
HealthyThresholdCount: 2
ListenerRule:
Type: AWS::ElasticLoadBalancingV2::ListenerRule
Properties:
ListenerArn: !Ref Listener
Priority: 4
Conditions:
- Field: path-pattern
Values: [ "/" ]
Actions:
- TargetGroupArn: !Ref TargetGroup
Type: forward
ListenerRule1:
Type: AWS::ElasticLoadBalancingV2::ListenerRule
Properties:
ListenerArn: !Ref Listener
Priority: 5
Conditions:
- Field: path-pattern
Values: [ "/socket.io/" ]
Actions:
- TargetGroupArn: !Ref TargetGroup
Type: forward
ListenerRule2:
Type: AWS::ElasticLoadBalancingV2::ListenerRule
Properties:
ListenerArn: !Ref Listener
Priority: 6
Conditions:
- Field: path-pattern
Values: [ "/socket.io/*" ]
Actions:
- TargetGroupArn: !Ref TargetGroup
Type: forward
但是连接保持断开状态,就像每秒一次。 我想尝试使用粘性选项,因为我使用的应用程序负载平衡器支持websocket。但是找不到有关如何使用yaml脚本更新执行此操作的适当文档。
答案 0 :(得分:-1)
负载平衡器不适用于长时间的Web套接字连接,并且将在连接后终止连接 certain time。
您最多可以将超时时间增加到4000 seconds。
但是AWS Api-Gateway为websocket添加了一项新功能,您可以将其与AWS Lambda一起使用。 此处更多信息:Api-Gateway Websockets 您可以看看带有websocket的无服务器example。
我希望有帮助。
多米尼克