HTTP/2上的WebSocket和GOAWAY

HTTP/2上的WebSocket和GOAWAY,websocket,http2,Websocket,Http2,我对HTTP/2上的WebSocket如何在Goaway浏览器(特别是Firefox)上工作感兴趣,因为我知道这是唯一一个支持H2上WebSocket的浏览器 现在,我知道Goaway是连接级别的事件,如果IIUC,WebSocket/H2连接实际上是一个已经升级的H2流 假设我们现在从服务器上获得了一个GOAWAY—我们是否希望浏览器只关闭H2流,该流支持使用代码1001的CloseEvent的WebSocket连接?是否有其他事件被触发/需要添加到WebSocket API中,例如,ongo

我对HTTP/2上的WebSocket如何在Goaway浏览器(特别是Firefox)上工作感兴趣,因为我知道这是唯一一个支持H2上WebSocket的浏览器

现在,我知道Goaway是连接级别的事件,如果IIUC,WebSocket/H2连接实际上是一个已经升级的H2流

假设我们现在从服务器上获得了一个GOAWAY—我们是否希望浏览器只关闭H2流,该流支持使用代码1001的
CloseEvent
的WebSocket连接?是否有其他事件被触发/需要添加到WebSocket API中,例如,
ongoaway

现在,我知道Goaway是连接级别的事件,如果IIUC,WebSocket/H2连接实际上是一个已经升级的H2流

单个HTTP/2连接可能有多个HTTP/2流,每个流可能是HTTP/2“升级”流上的WebSocket(请参阅)

目标是使用一个TCP连接承载可能的多个协议,因此一些流是正常的HTTP/2,一些流是HTTP/2上的WebSocket是可能的

当服务器发送连接级别的GOAWAY时,我希望客户机按照中的指定进行响应

特别是服务器可能会发送一个“优雅”的GOAWAY,因此客户端不会打开新的流

当服务器将要发送GOAWAY时,它应该安排发送一个终端(即
endStream=true
DATA
框架,其中包含一个WebSocket
Close
框架,这将导致浏览器中出现
CloseEvent

我认为不应该向浏览器的WebSocket API添加任何事件,HTTP/2上的传输对于客户端应用程序应该是完全透明的,就像使用HTTP/1.1或HTTP/2在使用
XMLHttpRequest
fetch()
时是透明的一样