来自 IE 11 的 Websocket onOpen 后的 EOF 异常

EOF Exception after Websocket onOpen from IE 11

我正在使用带有 javascript 的 javax websocket 服务器。 Websocket 连接发生在所有其他浏览器上,除了 IE(厌倦了 IE 11 和 10)。 调用 onOpen 并发生连接,之后抛出 EOFException 并显示空错误消息。下面是错误的堆栈跟踪

java.io.EOFException
        at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1250)
        at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1190)
        at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72)
        at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171)
        at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151)
        at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148)
        at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)

基本上,我无法确定是服务器端问题还是客户端问题。我需要从客户端或服务器引入超时吗?还是连接会立即关闭,我需要为此引入乒乓框架?请帮帮我!

我找到了解决方法。

基本上,我们需要检查 IE 中的请求和响应 header,请求和响应 header 与其他浏览器中的不一样。 我使用了“sec-webSocket-protocol”,其中 header 的值在其他浏览器中创建了空格,而在 IE 11 中没有这样的空格。 因此返回我收到的相同 header 解决了问题