俞敏洪所有演讲视频:CometD JavaScript 断开连接
来源:百度文库 编辑:中财网 时间:2024/05/05 22:07:09
CometD JavaScript 断开连接
由 sbordet 提交于星期二,2009/6/30-15:15。
JavaScript CometD API: 断开连接
JavaScript CometD 实现,在网络或Bayeux 服务器发生故障的情况下执行自动重新连接。
在配置部分中介绍了重新连接参数。
短暂网络故障
在临时网络故障的情况下,客户端通过 /meta/connect 频道的消息进行通知(请参阅元数据通道部分),主要是把该消息的successful字段设置为 false (请参阅例子)。
然而,Bayeux 服务器可能会保持客户端的状态,并在网络恢复时 Bayeux 服务器可能会表现得好像没有发生过什么事一样。
在这种情况下,客户端只是重建长轮询,但任何在网络故障时由客户端发布的消息将不会自动重发(但是有可能通过/meta/publish频道得到发布失败的通知,)。
长时间的网络故障或服务器故障
如果网络故障是足够长的时间,Bayeux 服务器超时丢失客户端,并删除与其相关联的状态。这些同样发生在 Bayeux 服务器崩溃时(除了所有客户端丢失的状态的进程)。
在这种情况下,重新连接机制在客户端上的执行以下步骤:
一长轮询重新连接请求,但是,服务器将拒绝它,并返回402::Unknown client错误消息
一尝试握手请求,服务器通常会接受它,并分配新的客户端
在成功的再次握手后,一长轮询重新建立
如果您注册元数据频道,应注意这些步骤,因为重新连接可能涉及与服务器的多个消息交换。
断开连接
调用 JavaScript CometD API disconnect() ,返回的消息被发送到 Bayeux 服务器,以便它可以清除任何与该客户端相关联的状态。
涉及与 Bayeux 服务器通信的所有方法,它都是异步方法:它会立即返回,在Bayeux服务器已收到断开连接请求之前。
如果服务器不能可达,(因为它崩溃或由于网络故障),JavaScript CometD 实现将停止任何重新连接尝试和清理任何本地的状态。
一般安全地忽略调用 disconnect()成功与否:在任何情况下断开客户端,清理其本地状态,如果服务器尚未可达,它将设置该客户端超时并为客户端清理出任何服务器端状态。
提示
如果用Firebug调试您的应用程序,并关闭服务器,您将在Firebug控制台中看到尝试重新连接。
要停止这些尝试,只是在 Firebug 命令行中键入: dojox.cometd.disconnect()(用于Dojo)或$.cometd.disconnect() (用于 jQuery)。