Tomcat 9 http / 2 Websockets

时间:2017-12-01 17:16:43

标签: tomcat websocket java-websocket

我试图在我的webapp上使用http / 2。 问题是我的websocket连接在使用http / 2时似乎不起作用。

我使用的是一个javascript文件 var webSocket = new WebSocket('wss://xxx.de:8443/urlto/websocket');

和server.xml中的T​​omcat Connector如下所示:

<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连接没有问题。

1 个答案:

答案 0 :(得分:2)

没有为HTTP / 2定义WebSocket握手,因此如果您想使用ws,则需要使用HTTP / 1.1。

有一个RFC试图在HTTP / 2上定义WS,但它从未完成。它已被https://datatracker.ietf.org/doc/draft-mcmanus-httpbis-h2-websockets/取代,我们必须看看这是否会如此。