websocket - 特定于浏览器的 Web 套接字错误关闭代码

标签 websocket jetty

我在我的应用程序中使用 Websockets 进行流式传输。 为此,我在后端使用 Jetty

关于 onclose 回调方法我有这个

@Override
    public void onClose(int arg0, String arg1) {
        logger.info("In onClose :: " + arg0 + " :: " + arg1);
}

我观察到的是,错误代码不是通用的,而是特定于浏览器的

当我使用 chrome 时它显示 1006 ,如果使用 ctrl+w 关闭浏览器,点击 Cross Button ,甚至用户点击注销按钮

但是在 firefox 中,如果使用 ctrl+w 关闭浏览器,点击十字按钮,甚至用户点击注销按钮,它会显示 1001

现在的问题是我真的无法确定为什么会发生断开连接,因为它是特定于浏览器的??

请分享您对如何在这种情况下进行调试的看法??

最佳答案

这可能有帮助:

https://www.rfc-editor.org/rfc/rfc6455#section-7.4.1

具体来说:

1001 indicates that an endpoint is "going away", such as a server going down or a browser having navigated away from a page.>

1006 is a reserved value and MUST NOT be set as a status code in a Close control frame by an endpoint. It is designated for use in applications expecting a status code to indicate that the connection was closed abnormally, e.g., without sending or receiving a Close control frame.

所以我猜你是从服务器的角度来看这个问题的,在这种情况下,1006 表示 chrome 端点表现不佳,并且服务器使用特殊的关闭代码对此使用react。在您的客户端,我将开始调试它以确保它成为将实际关闭代码 1001 返回服务器所需的任何关闭代码。现在您可能无法在所有情况下都关闭逻辑,这就是为什么首先存在此关闭代码的原因,但您至少应该能够通过自己的注销按钮干净地关闭连接。

关于websocket - 特定于浏览器的 Web 套接字错误关闭代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16648845/

相关文章:

azure - 无法让简单的 SignalR Azure 辅助角色发挥作用

javascript - 我的socket.io和node.js代码无法正常工作-为什么?

java - SSL 连接挂起 - Java

java - Appengine 调试 TagLibConfiguration (java jetty)

javascript - 在websockets javascript和golang服务器上工作,尝试发送文件和图像

websocket - 如何在 Traefik 中代理 WebSockets?

java - maven 中的 servlet api 版本和范围

java - 为 Karaf Jetty 中的特定上下文路径启用 SSL

gwt - 在 jetty 上部署 gwt web 应用程序

node.js - 是否可以在不同网络中创建点对点连接?