swoole(网络IO 一)

本文深入探讨Swoole的同步与异步、阻塞与非阻塞概念,解析长连接与短连接的区别及应用。详细介绍心跳机制与轮询机制在保持连接中的作用,以及Swoole中如何实现心跳检测。对比UDP与TCP的特点,阐述它们在网络通信中的角色。

Swoole基础概念与长链接

同步与异步

 

同步:

代码的运行从上往下执行

 

异步:

 |

    |

 

阻塞与非阻塞

 

阻塞:

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

 

非阻塞:

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

swoole中的异步回调

 

异步客户端

 

 

异步通过receive监听发送 服务端事件  (接收)

 

同步客户端

 

长连接

 

长链接:

一直连接,一直保持联系

 

短链接:

建立一次连接,就没有了

 

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

如何确保对方是否连接上

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

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

   1.心跳机制

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

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

    2.轮询机制

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

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

 

 

服务端

 

客户端

udp与tcp

 

Udp:(不负责任 渣男)

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

 

Tcp:(认真,可靠) 就是他了

  1. 先判断连接是否成功
  2. 再给你发信息
  3. 傻傻等待回复
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值