首页 > 解决方案 > WebSockets 不适用于 GCP 中的 HTTP/2 负载均衡器后端

问题描述

我有一个应用程序在 Google Cloud Platform 的负载均衡器后面运行。

当我在后端使用 HTTPS 协议时,我能够与 WebSockets 连接,并且所有 WebSocket 连接都可以正常工作。但是,当我将后端协议更改为 HTTP/2 时,我无法从应用程序连接,它返回的响应为502 Bad Gateway.

我可以将 WebSockets 与 HTTP/2 一起使用,还是需要执行一些配置才能将 WebSockets 与 HTTP2 后端一起使用?

标签: networkingwebsocketgoogle-cloud-platformhttp2google-cloud-load-balancer

解决方案


正如其他人评论的那样,HTTP/2 不支持 WebSocket,这就是您收到 5XX 错误的原因。

话虽如此,使用 HTTP/2 ref可以实现(并改进)WebSocket 功能。

如果您有使用 WebSocket 的现有代码,那么重写后端和前端可能不是很好。

但是,如果您正在开发一个新的异步服务,那么看看 HTTP/2 + Server Sent Event (SSE) 方案是个好主意。


推荐阅读