【问题标题】:CometD - how estabilish long-polling connectionCometD - 如何建立长轮询连接
【发布时间】:2016-06-23 09:04:08
【问题描述】:

只是为了确保我正确地执行此操作。我正在编写一个 Bayeux 客户端以与外部 CometD 服务器合作(通过长轮询)。我的客户端按以下顺序发送请求:握手、连接、订阅、连接。后一个连接会停止,直到有消息可用。当消息到来时,服务器响应。一切正常。我做得对吗?

【问题讨论】:

  • 这个客户端是什么语言? CometD 已经支持 JavaScript 和 Java。
  • Java 客户端。 CometD 实际上支持 java 并带有客户端库,不幸的是 java 6。
  • CometD 的 Java 客户端是 Java 7。你不需要重写一个,使用 CometD 的即可。
  • 我的错。不幸的是,我们的代码库是 java 6。
  • CometD 2.x 与 JDK 5 兼容。你想使用它而不是重写你自己的 Bayeux 客户端。

标签: http long-polling cometd bayeux


【解决方案1】:

一般情况下,客户端应遵循/meta/handshake和/meta/connect消息中服务器发送的advice。

订阅消息应由客户端保留,直到成功回复/meta/handshake。

按特定顺序发送请求并不十分精确,因为您至少需要使用两个连接。

因此/meta/handshake 请求优先;在成功回复/meta/handshake 后,/meta/subscribe 和/meta/connect 可以在两个连接上并行。

第一个/meta/connect 回复是否被保留则无关紧要:您的客户端将有一种机制来处理/meta/connect 消息并影响服务器是否保留/meta/connect 回复。

在CometD 中,第一个/meta/connect 与advice: { timeout: 0 } 一起发送,因为客户端想知道握手后服务器是否还活着(否则第一个连接可能“丢失”并且客户端可能认为当它没有与服务器连接良好时)。它还用于在握手后第一次快速通知/meta/connect 频道上的客户端应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2014-01-22
    • 2017-08-15
    • 2014-12-13
    相关资源
    最近更新 更多