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)。 |
|
来自: phoneone > 《CometD 2.x》