我在Firefox 4和Chrome 7中观察到以下行为:
如果运行websocket守护程序的服务器崩溃,重新启动,丢失网络连接等,则不会在客户端触发'onclose'或'onerror'事件.我希望在连接因任何原因被破坏时触发其中一个事件.
但是,如果守护程序首先干净地关闭,则会触发'onclose'事件(如预期的那样).
当守护程序未正常关闭时,为什么客户端将websocket连接视为打开?
我希望依靠预期的行为来通知用户服务器已不可用或客户端的Internet连接已中断.
TCP就是这样.最新的WebSockets标准草案(v76)具有干净的关闭消息机制.但是没有它(或者如果它没有机会被发送)你依赖正常的TCP套接字清理,这需要几分钟(或几小时).
我建议将某种信号处理程序/退出陷阱添加到服务器,以便在服务器被终止/关闭时,向所有连接的客户端发送干净的关闭消息.
您还可以向应用程序添加心跳机制(ala TCP keep alive)以检测对方何时消失.
| 归档时间: |
|
| 查看次数: |
2798 次 |
| 最近记录: |