1.首先创建一个httpClient。
2.发送握手消息 channel:/meta/handshake json:{"supportedConnectionTypes":["long-polling"],"channel":"/meta/handshake","version":"1.0"}3.创建一个destinations 给httpClient.
4.使用destinations 发送握手http消息,需要先获取 空闲的connection。
此时属于destinations 的connection为null5.将要发送的http消息写入到队列缓存中。
6.创建一个http connection,异步创建,创建好了给destinations。
7.连接创建好后,会将队列中的http消息发送至服务端。
1,发送订阅请求信息2.此时destinations 中空闲连接的队列为空,之前的连接还没有放入空闲连接队列。(虽然之前的握手响应已经回来,但这块代码在 将空闲连接放入代码之前,所以那个连接还没写入空闲队列。)
3.创建一个http connection,异步创建,创建好了给destinations。
4.将要发送的http消息写入到队列缓存中。
5.创建一个http connection,异步创建,创建好了给destinations。
6.连接创建好后,会将队列中的http消息发送至服务端。
后续的发送心跳连接,此时握手时创建的连接已经放入空闲队列,所以不需要创建新的连接。
发送的心跳连接请求 是30秒后才返回,而一返回响应,又会立即占用这条连接,发送请求,
所以在之后的交互中,这条连接只能发送心跳请求,接收心跳响应,接收服务端推送的信息。
连接空闲的标准应该是:当一条请求响应没有回来时,这条连接就不为空闲。