分享

CometD JavaScript 断开连接

 phoneone 2011-11-15

 

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)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多