Tomcat 9 http/2 个网络套接字
Tomcat 9 http/2 Websockets
我试图将 http/2 与我的网络应用程序一起使用。
问题是我的 websocket 连接在使用 http/2.
时似乎不起作用
我使用 javascript 文件
var webSocket = new WebSocket('wss://xxx.de:8443/urlto/websocket');
我在 server.xml 中的 Tomcat 连接器看起来像这样:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="/path/to/privkey.pem"
certificateFile="/path/to/cert.pem"
certificateChainFile="/path/to/chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
像这样启动服务器时,我收到一条错误消息 connection closed before receiving a handshake response
如果我不包括 <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
部分,websocket 连接没有问题。
未为 HTTP/2 定义 WebSocket 握手,因此如果您想使用 ws,则需要使用 HTTP/1.1.
有一个 RFC 试图在 HTTP/2 上定义 WS,但它从未完成。它已被替换为 https://datatracker.ietf.org/doc/draft-mcmanus-httpbis-h2-websockets/,我们必须看看是否会是这样。
我试图将 http/2 与我的网络应用程序一起使用。 问题是我的 websocket 连接在使用 http/2.
时似乎不起作用我使用 javascript 文件
var webSocket = new WebSocket('wss://xxx.de:8443/urlto/websocket');
我在 server.xml 中的 Tomcat 连接器看起来像这样:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="/path/to/privkey.pem"
certificateFile="/path/to/cert.pem"
certificateChainFile="/path/to/chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
像这样启动服务器时,我收到一条错误消息 connection closed before receiving a handshake response
如果我不包括 <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
部分,websocket 连接没有问题。
未为 HTTP/2 定义 WebSocket 握手,因此如果您想使用 ws,则需要使用 HTTP/1.1.
有一个 RFC 试图在 HTTP/2 上定义 WS,但它从未完成。它已被替换为 https://datatracker.ietf.org/doc/draft-mcmanus-httpbis-h2-websockets/,我们必须看看是否会是这样。