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

Websocket Web套接字错误关闭特定于浏览器的代码,websocket,jetty,Websocket,Jetty,我在应用程序中使用WebSocket进行流媒体传输。 为此,我在后端使用Jetty 关于onclose回调方法,我有 @Override public void onClose(int arg0, String arg1) { logger.info("In onClose :: " + arg0 + " :: " + arg1); } 我观察到的是,错误代码不是通用的,而是特定于浏览器的 当我使用chrome浏览器时,它会显示1006,如果使用ctrl+w关闭浏览器,

我在应用程序中使用WebSocket进行流媒体传输。 为此,我在后端使用Jetty

关于onclose回调方法,我有

@Override
    public void onClose(int arg0, String arg1) {
        logger.info("In onClose :: " + arg0 + " :: " + arg1);
}
我观察到的是,错误代码不是通用的,而是特定于浏览器的

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

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

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

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

这可能会有所帮助:

具体而言:

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

1006是保留值,不能设置为 通过端点关闭控制框。它被指定用于 应用程序希望状态代码指示连接 异常关闭,例如,未发送或接收关闭消息 控制框


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

当用户单击注销按钮时,我是否应该在任何浏览器上获得代码为1000而不是1001,请纠正我的错误。这取决于注销按钮的情况,我怀疑某些javascript框架正在代表您工作。若你们并没有得到1000,那个么我会在客户端说点什么。关闭代码1000是由你们的代码发布的。任何javascript框架都不应该自动为您发布close 1000。firefox发送1001是对严酷的标签/浏览器关闭的理智回应。chrome不发送关闭,而是依赖服务器端EOF检测和随后的异常(不干净)关闭代码1006,这也是对您的用例的明智反应。