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

时间:2013-05-20 11:47:26

标签: websocket jetty

我在我的应用程序中使用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关闭浏览器,单击交叉按钮,甚至用户点击注销按钮

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

请分享您的观点,如何在这种情况下进行调试?

1 个答案:

答案 0 :(得分:2)

这可能有所帮助:

http://tools.ietf.org/html/rfc6455#section-7.4.1

具体做法是:

  

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

  

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

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