我在我的应用程序中使用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关闭浏览器,单击交叉按钮,甚至用户点击注销按钮
现在的问题是我真的无法确定为什么会发生断开连接,因为它是特定于浏览器的?
请分享您的观点,如何在这种情况下进行调试?
答案 0 :(得分:2)
这可能有所帮助:
http://tools.ietf.org/html/rfc6455#section-7.4.1
具体做法是:
1001表示端点“正在离开”,例如服务器 下降或浏览器已离开页面。>
和
1006是保留值,不得设置为a中的状态码 由端点关闭控制框架。它被指定用于 应用程序期望状态代码指示连接 被异常关闭,例如,没有发送或接收关闭 控制框架。
所以我猜你从服务器的角度来看这个问题,在这种情况下,1006会表明chrome端点行为不好,服务器对特殊关闭代码做出反应。在你的客户端,我会开始调试它,以确保它使它成为需要的任何密切代码,以实现1001的实际关闭代码回到服务器。现在您可能无法在所有场景中关闭逻辑,这就是为什么这个紧密代码首先存在,但您至少应该能够通过自己的注销按钮干净地关闭连接。