CometD - 如何建立长轮询连接

时间:2016-06-23 09:04:09

标签: http long-polling cometd bayeux

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

1 个答案:

答案 0 :(得分:1)

通常,客户端应遵循服务器在advice/meta/handshake消息中发送的/meta/connect

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

按特定顺序发送请求并不完全准确,因为您希望至少使用两个连接。

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

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

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