Swoole基础概念与长链接

同步与异步

 

同步:

代码的运行从上往下执行

 

异步:

 |

    |

 

阻塞与非阻塞

 

阻塞:

需要等待上一行代码执行完毕

 

非阻塞:

不需要等待执行的结果,就可以进行下一步操作

swoole中的异步回调

 

异步客户端

 

swoole(网络IO 一)

 

异步通过receive监听发送 服务端事件

 

同步客户端

swoole(网络IO 一)

swoole(网络IO 一)

 

长连接

 

长链接:

一直连接,一直保持联系

 

短链接:

建立一次连接,就没有了

 

短链接可以通过ajax轮询的方式进行模拟长链接,但是如果是多台服务器多个连接的话,在这个过程中不断创建连接关闭连接的动作就会消耗很多不必要的资源,会给服务器造成很大的压力

心跳检测

 

长链接可能会因为网络问题,导致服务断开,客户端断开

怎么保持连接,确保对方是否连接

  1. 心跳机制

在一定时间内,客户端定时去请求服务端,看是否有信息;

发送的心跳数据包,需要足够地小

  1. 轮询机制

服务端定时主动去监控客户端状态 客户端返回状态信息

swoole中的心跳检测

 

Swoole中我们可以通过set的方式来设置心跳检测

heartbeat_check_interval 设置服务器定时检测在线列表的时间间隔

heartbeat_idle_time 设置连接最大的空闲时间,如果最后一个心跳包的时间与当前时间只差超过设定值则认为连接失效

 

建议heartbeat_idle_time比heartbeat_check_interval的值多两倍多

 

swoole_timer_tick : 每隔固定时间执行某一个方法,会返回定时器id

swoole_timer_after : 在规定的时间后执行,只执行

一次,会返回定时器id

swoole_timer_clear :清空定时器,条件是定时器的id

 

 

服务端

 

swoole(网络IO 一)

客户端

swoole(网络IO 一)

udp与tcp

 

Udp:(不负责任 渣男)

  1. 不需要建立连接
  2. 通信不需要一直保持

 

Tcp:(认真,可靠)

  1. 先判断连接是否成功
  2. 再给你发信息
  3. 傻傻等待回复

相关文章: