只是为了确保我正确地做到了这一点。我正在编写一个 Bayeux 客户端以与外部 CometD 服务器合作(通过长轮询)。我的客户端按以下顺序发送请求:握手、连接、订阅、连接。后一个连接会停止,直到有消息可用。当消息到来时,服务器响应。一切正常。我做得对吗?
问问题
1334 次
1 回答
2
一般来说,客户端应该遵循advice
服务器发送的/meta/handshake
and/meta/connect
消息。
订阅消息应由客户端保留,直到成功/meta/handshake
回复。
以特定顺序发送请求并不十分精确,因为您至少需要使用两个连接。
因此/meta/handshake
请求先行;/meta/handshake
回复成功后/meta/subscribe
,/meta/connect
可以同时进行两个连接。
是否保留第一个/meta/connect
回复是无关紧要的:您的客户端将有一种机制来处理/meta/connect
消息并影响服务器是否保留/meta/connect
回复。
在CometD中,发送第一个/meta/connect
是advice: { timeout: 0 }
因为客户端想知道握手后服务器是否还活着(否则第一个连接可能“丢失”,客户端可能认为它与服务器连接良好,但实际上不是) . 它还用于/meta/connect
在握手后第一次快速通知通道上的客户端应用程序。
于 2016-06-28T11:17:38.727 回答