Http CometD-如何建立长轮询连接

Http CometD-如何建立长轮询连接,http,long-polling,cometd,bayeux,Http,Long Polling,Cometd,Bayeux,只是为了确保我做得正确。我正在编写一个Bayeux客户机来与外部CometD服务器协作(通过长轮询)。我的客户端按以下顺序发送请求:握手、连接、订阅、连接。后一个连接将暂停,直到有消息可用。当收到消息时,服务器将响应。一切正常。我做得对吗?一般来说,客户端应该遵循服务器在/meta/handshake和/meta/connect消息中发送的建议 订阅消息应由客户端保留,直到成功的/meta/handshake回复 按特定顺序发送请求并不精确,因为您至少需要使用两个连接 因此,/meta/hand

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

一般来说,客户端应该遵循服务器在
/meta/handshake
/meta/connect
消息中发送的
建议

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

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

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

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


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

此客户端是什么语言?CometD已经支持JavaScript和Java.Java客户端。事实上,CometD支持java并附带了客户端库,不幸的是,它们是Java6。CometD的java客户端是Java7。你不需要重写一个,只要用Comet's就行了。不幸的是,我们的代码库是Java6.Cometd2.x,它与JDK5兼容。您希望使用它,而不是重写自己的Bayeux客户机。