12

我正在使用 Netty websockets,除了这个小问题,一切似乎都运行良好:

如果我关闭 js websocket 客户端的浏览器/选项卡,则在使用 Mozilla firefox(当前使用 firefox 14)时会自动关闭 websocket 连接,但在 Chrome 20/21 中不会发生同样的事情。

任何人都见过类似的问题/谁能告诉为什么连接没有自动关闭?

4

3 回答 3

6

我想我应该在铬错误部分早些时候检查过这个,但我不确定它是否是一个错误。之前有人报告过,并且已经存在铬错误:

问题 51687:WebSocket:在重新加载/标签关闭时发送关闭代码 1001

更新:有人提交了一个补丁来解决这个问题,可以在上面的链接中看到。

于 2012-08-02T06:41:04.957 回答
1

这可能不对,但我无法对您的问题发表评论。如果您有一个正在运行的应用程序并从“设置”->“幕后”中选择了“在 Chromium 关闭时继续运行后台应用程序”,Chrome/Chromium 并不会真正关闭。

可能是将 websocket 连接视为应用程序。尝试查看您正在运行的进程并终止您找到的任何 chrome/chromium 进程。

同样,这只是我的猜测。

于 2012-08-01T09:48:11.293 回答
0

当用户关闭窗口或浏览器时,Chrome 不会关闭连接。它将触发一个错误事件。

一种可能的解决方法可能如下所示:

  @OnError
    public void onErr(Throwable t) {
        onClose(this.container.getWsSession(), null);

    }

但这每次都会关闭连接,触发错误。在自行关闭连接之前,您可能不想检查可投掷物。

如需更多讨论,请加入此问题:

Websocket:关闭浏览器在chrome中触发onError(),但在Firefox中触发onClose()事件

于 2014-05-12T00:17:36.070 回答