### 1、连接与握手流

连接与握手，是在客户端打开连接时发生的。交互过程中，sid 会保持不变

<img src="/img/d76551a7b68e44dab59bfc889378a348.png" width="600" />

服务端 onOpen 时，握手未完成，还不能给“当前会话”发消息。


### 2、心跳与自动重连流

心跳与自动重连，是平常保持连接活跃性的方式。就像心跳一样，按固定间隔进行跳动，发现连接失效时尝试自动重连

<img src="/img/76307db3305949d69b7dd10f11658d33.png" width="600" />



### 3、消息流（可双向互听互发）

客户端与服务端连通后。基于“双向通讯”特点，谁都可以是“发送端”（或请求者）、“接收端”（或响应者）

* 发送

<img src="/img/341d0f2431504ba0af720ceccc3756da.png" width="600" />


* 发送并请求（有同步与异步之选）

交互过程中，sid 会保持不变。同步时，会有完整的闭环。

<img src="/img/613217b622644351aa6dc0d3ba6c5843.png" width="600" />


* 发送并订阅

交互过程中，sid 会保持不变

<img src="/img/d25bbc96bbed4ed3914abdddfd856f44.png" width="600" />


### 4、关闭流

关闭，有几种情况会发现：

* 1，服务端或客户端主动调用会话关闭而产生的“协议关闭”
* 2，网络中断引起的“连接关闭”

协议关闭的状态维护：

* 预关闭与关闭可一个使用 closeCode 进行维护，方便状态切换

预关闭（session::preclose）：

<img src="/img/20996de569c1476bb085e24fed3c7ee7.png" width="600" />


关闭（session::close）：

<img src="/img/00bf8bcf76ff401ea5555b64d91765a8.png" width="600" />
