当前位置: 首页 > 工具软件 > CometD > 使用案例 >

comet学习(三)cometd心跳机制

何修能
2023-12-01

 

 1. 客户端发起心跳请求:默认30秒后服务端返回响应,收到响应后,客户端立即发起下一次心跳请求。
  
   也就是客户端与服务端心跳交互中,虽然第一次是由客户端发起,但服务端不会立即返回响应,而是三十秒后返回响应,
   这种交互更多的像是由服务端发起连接保持交互。

 

  2. 当服务端关闭或断开与客户端的连接,cometd客户端底层实现会立即通知客户端应用实现的连接监听器。

    (最底层发起者是AsyncHttpConnection.handle)

  3. 此时cometd的实现会开启定时重连线程,重现向服务端发起初始化请求,第一次一秒执行,第二次延迟两秒,一次类 推,直到再次与服务端建立连接。

 

  4. 跟踪端口监听状态得出:客户端先发送握手请求,然后发送连接请求,只后的心跳机制,和接收服务端推送的信息,都是在一个连接上进行,这个连接一直存在,只有发送其它的信息,才通过新的端连接发送。

 

  5. 如果是客户端主动断开连接,由于服务端处理客户端的心跳请求默认是30秒后才回响应,所以服务端30秒后才会检测到客户端断开连接了,此时会清除为客户端建立的session。

 

  30秒的间隔时间如果过长,则服务端检测客户端连接断开则会延迟太长,30秒的的间隔时间,如果太短,则会增加客户端的心跳请求次数。

 类似资料: