【问题标题】:Websocket connection in case of browser crash浏览器崩溃时的 Websocket 连接
【发布时间】:2012-07-31 15:08:59
【问题描述】:

如果问题很简单,请原谅我,但我不知道在这种一般情况中会发生什么:如果由于某些问题或故障/系统故障(任何类型的故障等)浏览器崩溃,正在运行的 websocket 连接会发生什么?它会被关闭还是会是什么状态?

我正在使用 netty websocket 实现。现在,具体来说netty websocket implementation,在上面的场景中,会发生什么? (当我尝试时,我得到这个:如果我手动关闭浏览器,连接就会关闭,但是如果我终止浏览器进程,这不会发生)。如果连接没有关闭,如何在发送消息时检测/处理它,否则在发送消息时,尝试发送消息时会出现ClosedChannelException

编辑:除了检查上面提到的错误,有没有办法知道使用netty实现时websocket连接已经关闭?

【问题讨论】:

    标签: websocket netty


    【解决方案1】:

    我认为您必须捕获 ClosedChannelException 并以与完全关闭的连接相同的方式处理它。

    如果您的 websocket 会话很昂贵,并且您想更快地发现被终止的连接,您可以定期向每个客户端发送 ping 请求。 Netty 有一个 PingWebSocketFrame 类,看起来它会为你提供支持。

    【讨论】:

    • 第一个选项看起来不错,但是第二个选项,嗯...我正在使用 websockets,因此我将不得不定期进行不必要的 ping(也是 websockets 的一个优势)以及尝试发现的原因终止连接是由于抛出异常。
    • @shg 不需要定期 ping。我只是将它们作为一个选项包括在内,以防您无法等待 ClosedChannelException 发现连接中断。
    猜你喜欢
    • 2013-01-11
    • 1970-01-01
    • 2018-09-11
    • 2016-07-22
    • 1970-01-01
    • 2012-07-30
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多