正常情况下客户端中断TCP连接时,会发送一个FIN包,进行4次断开握手来通知服务器。但一些异常情况下,如客户端突然断电断网或者网络异常,服务器可能无法得知客户端已断开连接。

尤其是移动网络,TCP连接非常不稳定,所以需要一套机制来保证服务器和客户端之间连接的有效性。

Swoole扩展本身内置了这种机制,开发者只需要配置一个参数即可启用。Swoole在每次收到客户端数据会记录一个时间戳,当客户端在一定时间内未向服务器端发送数据,那服务器会自动切断连接。

使用方法:

上面的设置就是每5秒侦测一次心跳,一个TCP连接如果在10秒内未向服务器端发送数据,将会被切断。

高级用法:

使用swoole_server::heartbeat()函数手工检测心跳是否到期。此函数会返回闲置时间超过heartbeat_idle_time的所有TCP连接。程序中可以将这些连接做一些操作,如发送数据或关闭连接。

以上是文章全部内容,有需要学习交流的友人请加入交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的。感谢阅读!

点此加入该群

最新文章

  1. ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格
  2. Eclipse JAVA文件注释乱码
  3. ReactNative之坑爹的在线安装
  4. PAT 1004. 成绩排名 (20)
  5. 安装 phpredis 扩展
  6. SQL 语句中的With(index())
  7. IntelliJ IDEA通过Spring配置连接MySQL数据库
  8. 第二次作业第2题_JH
  9. duck
  10. 【iOS】彩虹渐变色 的 Swift 实现
  11. django如何查看mysql已有数据库中已有表格
  12. 【Centos】Postgresql连接测试(Perl和Ruby)
  13. java.util.concurrent介绍【转】
  14. sping的quartz设置定时任务
  15. laravel记住登录、设置时间
  16. stardog 基本试用(社区版)
  17. 【转】PHP操作MongoDB【NoSQL】
  18. 6-[多线程]-互斥锁、GIL、死锁、递归锁、信号量
  19. TeamWork#1,Week 2,Learn In Team
  20. beta冲刺7/7

热门文章

  1. django----session相关配置
  2. android开发针对小米、三星、华为8.0+系统个别型号打开应用闪退
  3. [ASP.NET Core 3框架揭秘] 文件系统[4]:程序集内嵌文件系统
  4. vue hover如何触发事件?
  5. Python面向对象-继承和多态特性
  6. echart的legend不显示问题
  7. PMBOK 指南 第三章 项目经理的角色
  8. Eclipse——关联源代码
  9. IoT缺德相关
  10. 使用 Redis 进行阅读数统计并定时持久化