Networking WebSocket在GCP中不与HTTP/2负载平衡器后端一起工作

Networking WebSocket在GCP中不与HTTP/2负载平衡器后端一起工作,networking,websocket,google-cloud-platform,http2,google-cloud-load-balancer,Networking,Websocket,Google Cloud Platform,Http2,Google Cloud Load Balancer,我有一个应用程序运行在谷歌云平台的负载均衡器后面 当我在后端使用HTTPS协议时,我能够连接WebSocket,所有WebSocket连接都可以正常工作。但是,当我将后端协议更改为HTTP/2时,我无法从应用程序进行连接,并且它返回一个响应502 Bad Gateway 我可以将WebSocket与HTTP/2一起使用吗?或者我需要执行一些配置才能将WebSocket与HTTP2后端一起使用吗?正如其他人所评论的,WebSocket在HTTP/2中不受支持,这就是您收到5XX错误的原因 话虽如此

我有一个应用程序运行在谷歌云平台的负载均衡器后面

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


我可以将WebSocket与HTTP/2一起使用吗?或者我需要执行一些配置才能将WebSocket与HTTP2后端一起使用吗?

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

话虽如此,WebSocket功能可以通过HTTP/2实现(并得到改进)

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


但是,如果您正在开发一个新的异步服务,那么最好看看HTTP/2+服务器发送事件(SSE)方案。

Websocket代理对于负载平衡器应该是透明的,在文档中它没有对HTTP2协议做太多说明。您好@Pievis,但我无法理解Websocket代理应该是透明的,因为负载平衡器可以解释这句话吗?谢谢WebSocket握手需要HTTP/1.1(目前)。。。如果将所有通信强制转换为HTTP/2,则会中断WebSocket握手。这是因为HTTP/2不支持
升级
指令。其他信息:请勿将HTTP/2后端与WebSocket一起使用。负载平衡器将HTTP升级协议请求转发到后端,后端将失败。