【问题标题】:EOF Exception after Websocket onOpen from IE 11来自 IE 11 的 Websocket onOpen 后出现 EOF 异常
【发布时间】:2020-12-17 08:29:49
【问题描述】:

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

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)

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

【问题讨论】:

    标签: javascript java internet-explorer websocket java-websocket


    【解决方案1】:

    我找到了解决办法。

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

    【讨论】:

    • 感谢您发布此问题的解决方案。您可以在 48 小时后将您的答案标记为已接受的答案,此时可以标记。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    相关资源
    最近更新 更多