只是为了确保我正确执行此操作。我正在编码Bayeux客户端与外部Cometd Server(通过长播)配合。我的客户按以下顺序发送请求:握手,连接,订阅,连接。后者连接停滞直到有消息可用。当消息到来时,服务器响应。一切都起作用。我做得正确吗?
通常,客户端应遵循/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
频道上通知客户端应用程序。