CometD - 如何建立长轮询连接
CometD - how estabilish long-polling connection
只是为了确保我这样做是正确的。我正在编写一个 Bayeux 客户端以与外部 CometD 服务器合作(通过长轮询)。我的客户端按以下顺序发送请求:握手、连接、订阅、连接。后一个连接会停止,直到有消息可用。当消息到来时,服务器响应。一切正常。我做得对吗?
一般情况下,客户端应该遵循服务器在/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 }
发送的,因为客户端想知道握手后服务器是否还活着(否则第一个连接可能是"lost" 并且客户端可能认为它与服务器的连接正常,但实际情况并非如此)。它还用于在握手后第一时间快速通知 /meta/connect
通道上的客户端应用程序。
只是为了确保我这样做是正确的。我正在编写一个 Bayeux 客户端以与外部 CometD 服务器合作(通过长轮询)。我的客户端按以下顺序发送请求:握手、连接、订阅、连接。后一个连接会停止,直到有消息可用。当消息到来时,服务器响应。一切正常。我做得对吗?
一般情况下,客户端应该遵循服务器在/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 }
发送的,因为客户端想知道握手后服务器是否还活着(否则第一个连接可能是"lost" 并且客户端可能认为它与服务器的连接正常,但实际情况并非如此)。它还用于在握手后第一时间快速通知 /meta/connect
通道上的客户端应用程序。