请原谅我,如果问题很简单,但我不知道在这个一般情况下会发生什么:如果由于某些问题或失败/系统故障(任何类型的失败等)浏览器崩溃了,正在运行的websocket连接会发生什么?它会被关闭还是它的状态?
我正在使用netty websocket实现。现在,特别是在 netty websocket实现中,在上面的场景中,会发生什么? (当我尝试时,我得到这个:如果我手动关闭浏览器,连接已关闭,但如果我终止浏览器进程,则不会发生这种情况)。如果连接未关闭,我如何在发送消息时检测/处理它,否则在发送消息时,尝试发送消息时会发生ClosedChannelException
。
编辑:除了检查上面提到的错误之外,有没有办法知道在使用netty实现时websocket连接已经关闭了?
答案 0 :(得分:4)
我认为你必须抓住ClosedChannelException并以与干净关闭的连接相同的方式处理它。
如果您的websocket会话很昂贵并且您希望更快地发现被杀死的连接,您可以定期向每个客户端发送ping请求。 Netty有一个PingWebSocketFrame类,它看起来像是支持你。