问题描述
我正在使用 netty websocket(java) 连接到 asterisk 媒体服务器并从服务器接收事件。然而,在某些事件之后,websocket 停止运行并且应用程序冻结。我的问题是 websocket 是否会阻塞或者 websocket 停止使用的可能原因是什么?
解决方法
原因可以是任何东西。其中一些是:
-
由于防火墙或网络拥塞导致网络/tcp 套接字冻结
-
Asterisk 重新启动或 asterisk 中的错误
-
Java 库中的错误。
最现实的选择是每 X 秒发送一次 ping 事件或发起触发事件的假呼叫。这就是所谓的心跳。如果超过 Y 秒没有收到心跳响应,请重新启动连接。