我刚刚注意到,gcp http(s)负载均衡器现在支持websockets。我去尝试了,遇到了一些问题。我使用Cloud CDN和简单的,没有url映射的后端(Node.js)来安装https://负载均衡器。当我建立websocket连接时,我会收到成功的升级响应,但是当我将帧发送到服务器时,就永远不会收到它们。服务器可以将帧发送回客户端。几乎就像负载平衡器不知道连接已升级一样,因此不允许客户端发送任何数据。

当我查看https负载平衡器的日志时,看到101交换协议(protocol)响应,然后statusDetails是"client_disconnected_after_partial_response",几乎就像是一个正常的http请求一样。

任何帮助,将不胜感激。

最佳答案

经过一些调查,似乎当GCP负载平衡器通过GCP CDN时,客户端消息永远不会到达后端。

我通过在新的后端“websocket-prototype”中复制所需的后端配置来解决此问题,然后仅更改了websocket原型(prototype)的“use cdn”设置。最后,我将Websocket服务器的路径映射到不带CDN的配置。

google-cloud-platform - GCP HTTP负载平衡器-Websocket正在升级,但客户端没有框架-LMLPHP

关于google-cloud-platform - GCP HTTP负载平衡器-Websocket正在升级,但客户端没有框架,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43874117/

10-09 01:18