提问者:小点点

EOF异常Websocket onOpen fromIE11


我正在使用带有javascript的javax websocket服务器。Websocket连接发生在除了IE之外的所有其他浏览器上(IE11和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)

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


共1个答案

匿名用户

我找到了解决办法。

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