3

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

关于 onclose 回调方法我有这个

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

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

当我使用 chrome 时,它​​会显示1006,如果使用 ctrl+w 关闭浏览器,单击交叉按钮,甚至用户单击注销按钮

但是在Firefox中,1001如果使用 ctrl+w 关闭浏览器,单击 Cross Button ,甚至用户单击注销按钮,它会显示

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

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

4

1 回答 1

2

这可能会有所帮助:

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

具体来说:

1001 表示端点正在“离开”,例如服务器关闭或浏览器已导航离开页面。>

1006 是保留值,绝不能在端点关闭控制帧中设置为状态码。它被指定用于期望状态代码指示连接已异常关闭的应用程序,例如,没有发送或接收关闭控制帧。

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

于 2013-05-20T12:13:16.807 回答