`

comet 客户端处理机制

 
阅读更多

1.首先创建一个httpClient。
2.发送握手消息 http://192.168.0.218:8086/cometd/cometd/handshake
  channel:/meta/handshake json:{"supportedConnectionTypes":["long-polling"],"channel":"/meta/handshake","version":"1.0"}

3.创建一个destinations 给httpClient.

4.使用destinations 发送握手http消息,需要先获取 空闲的connection。
 
  此时属于destinations 的connection为null

5.将要发送的http消息写入到队列缓存中。

6.创建一个http connection,异步创建,创建好了给destinations。

7.连接创建好后,会将队列中的http消息发送至服务端。


1,发送订阅请求信息url:http://192.168.0.218:8086/cometd/cometd/subscribe

2.此时destinations 中空闲连接的队列为空,之前的连接还没有放入空闲连接队列。(虽然之前的握手响应已经回来,但这块代码在 将空闲连接放入代码之前,所以那个连接还没写入空闲队列。)

3.创建一个http connection,异步创建,创建好了给destinations。

4.将要发送的http消息写入到队列缓存中。

5.创建一个http connection,异步创建,创建好了给destinations。

6.连接创建好后,会将队列中的http消息发送至服务端。

 

后续的发送心跳连接,此时握手时创建的连接已经放入空闲队列,所以不需要创建新的连接。

发送的心跳连接请求 是30秒后才返回,而一返回响应,又会立即占用这条连接,发送请求,

所以在之后的交互中,这条连接只能发送心跳请求,接收心跳响应,接收服务端推送的信息。

连接空闲的标准应该是:当一条请求响应没有回来时,这条连接就不为空闲。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics