俞敏洪所有演讲视频: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)。