心跳在swoole里的实现?

swoole会在主进程独立起一个心跳线程,通过定时轮询所有的连接,来判断连接的生死,所以swoole的心跳不会堵塞任何业务逻辑。


图片1.png

设置完成了之后,你会发现设置了定时检测之后,如果客户端没在规定的时间之内发送数据就会关闭。
heartbeat_check_interval: 服务器定时检测在线列表的时间
heartbeat_idle_time: 连接最大的空闲时间 (如果最后一个心跳包的时间与当前时间之差超过这个值,则认为该连接失效)

配置建议

建议 heartbeat_idle_time 为 heartbeat_check_interval 的两倍多一点。
这个两倍是为了进行容错,允许丢一个包而多一点是考虑到网络的延时。

为什么需要心跳包?客户端如何维持心跳?

在从客户端到服务器的一条巨大的链路中会经过无数的路由器,其中每一个路由器都有可能会有检测到多少秒时间内无数据包则自动关闭连接的这种节能机制,为了让这个可能会出现的节能机制失效,客户端可以设置一个定时器,每隔固定的时间都发一个随机字符的一字节的数据包,通常我们把这种数据包就叫做心跳包。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是心跳呢? 心跳用于判断一个连接是正常还是断开的状态 例如:TCP中使用五元组标识一个网络连接,创建TCP连接...
    JunChow520阅读 2,091评论 0 3
  • 上一节我们讲述了websocket在swoole中的使用,并且我们也给出了一个简单的聊天模型,不同的客户端可以相互...
    yichen_china阅读 4,129评论 2 5
  • 心跳是什么? 顾名思义,心跳是判断一个事物生还是死的一个标准,在swoole里,心跳是指用来判断一个连接是正常还是...
    一个人的北京_阅读 2,171评论 0 1
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,950评论 0 5
  • PHP常用socket创建TCP连接,使用CURL创建HTTP连接,为了简化操作,Swoole提供了Client类...
    JunChow520阅读 3,906评论 0 3