[Swoole系列入门教程 3] 心跳检测
一.Swoole 的4大知识点:
1.TCP/UDP服务器
2.微服务
3.协程
二.同步与异步:
同步买奶茶:小明点单交钱,然后等着拿奶茶;
异步买奶茶:小明点单交钱,店员给小明一个小票,等小明奶茶做好了,再来取。
差别:发送消息和接受消息不是同步的!
发送API请求, 和获取API请求的结果不是同步的!GPS平台可用
所以用到的可能是swoole的异步client! 不过4.3之后,异步客户端的recv方法被移除了
异步客户端(4.3之后是协程客户端?)是长链接, 不是连了就断了,但是oneLink服务器的不一定是长链接
三.长链接和短连接
短连接:例如ajax(HTTP), 链接完就断了,只能客户端主动发消息给服务端
使用ajax模拟长链接的话, 轮询, 不断的去请求服务器, 不断的创建-销毁链接, 对服务器压力非常大
长链接: 服务端也能够发消息给客户端(TCP)
长链接可能存在的问题: 链接断开 ->引入心跳检测概念
四:心跳检测
分布式组件(心跳包):
1.能够剔除一些无用的链接(例如webSocket关闭浏览器却没有关闭链接)
2.保持活跃(长期没有发消息,类似QQ的敲门提示)
3.网络传输过程中没了
为什么要心跳检测?
1.通过心跳检测,回收fd,因为fd资源是有限的
2.客户端定时给服务端发送点数据,防止连接由于长时间没有通讯而被某些节点
的防火墙关闭导致连接断开的情况。
3.服务端可以通过心跳来判断客户端是否在线,如果客户端在规定时间内没有发来任何数据,
就认为客户端下线。这样可以检测到客户端由于极端情况(断电、断网等)下线的事件。
五.swoole心跳检测的代码实现
$server->set([
'worker_num'=>1, //设置进程
'heartbeat_idle_time'=>10,//连接最大的空闲时间
'heartbeat_check_interval'=>3 //服务器定时检查
]);
六.定时器(Timer)
demo测试方法, 写个定时器, 再差不多到空闲时间, 客户端就发送一个消息,用于保持连接
[Swoole系列入门教程 3] 心跳检测的更多相关文章
- [Swoole系列入门教程 5] UDP协议和demo
• 客户端服务端没有任何联系 • 指定地址跟端口,不关心消息是否发送成功 • 心跳检测不能影响到客户端• udp建立长连接
- [Swoole系列入门教程 4] 定时器与心跳demo
- [Swoole系列入门教程 1] CentOs 上的Swoole安装
如果已经用宝塔安装好了PHP, 开启相应的扩展 一.编译安装git clone https://github.com/swoole/swoole-src.git cd swoole-src/ phpi ...
- [Swoole系列入门教程 6] TCP协议和粘包
- [Swoole系列入门教程 2] 入门级的Swoole的demo.服务端与客户端
- Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】
Laravel 5 系列入门教程(一)[最适合中国人的 Laravel 教程] 分享⋅ johnlui⋅ 于 2年前 ⋅ 最后回复由 skys215于 11个月前 ⋅ 17543 阅读 原文发表在 ...
- 2016 版 Laravel 系列入门教程
2016 版 Laravel 系列入门教程 (1) - (5) http://www.golaravel.com/post/2016-ban-laravel-xi-lie-ru-men-jiao-ch ...
- Mina 系列(四)之KeepAliveFilter -- 心跳检测
Mina 系列(四)之KeepAliveFilter -- 心跳检测 摘要: 心跳协议,对基于CS模式的系统开发来说是一种比较常见与有效的连接检测方式,最近在用MINA框架,原本自己写了一个心跳协议实 ...
- 《进击吧!Blazor!》系列入门教程 第一章 8.部署
<进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...
随机推荐
- Oracle18C安装后首次创建数据库并用sql developer 创建连接和用户
注意: SQL Developer 不能用于创建Oracle数据库,只能用来连接已经创建的数据库,数据库的建立要通过Database Configuration Assistant(DBCA)来完成. ...
- Maven - 深入理解maven构建生命周期和各种plugin插件
作者:亚当-adam 来源:CSDN 原文:https://blog.csdn.net/zhaojianting/article/details/80321488 版权声明:本文为博主原创文章,转载请 ...
- csps退役记
AFO 省二稳了,指望文化课吧 hzoi加油
- 云-腾讯云-短信:短信(SMS)
ylbtech-云-腾讯云-短信:短信(SMS) 快速稳定.简单易用.触达全球的短信服务,支持国内短信.语音短信与国际短信 1.返回顶部 1. 腾讯云短信 SMS 简介 腾讯云短信(Short Mes ...
- 盒子阴影 box-shadow
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- ps快速将白底图片变为透明图片
方法一: 如果图层有锁图标,则要点击它,然它消失.然后选中魔棒工具,然后点击图片上要透明的区域,按下backspace键即可. 方法二: 转载自:https://blog.csdn.net/sunyi ...
- hive 总结三(压缩)
本文参考:黑泽君相关博客 本文是我总结日常工作中遇到的坑,结合黑泽君相关博客,选取.补充了部分内容. 开启 map 输出阶段压缩可以减少 job 中 map 和 Reduce task 间数据传输量. ...
- CCPC 2019 网络赛 HDU huntian oy (杜教筛)
1005 huntian oy (HDU 6706) 题意: 令,有T次询问,求 f(n, a, b). 其中 T = 10^4,1 <= n,a,b <= 1e9,保证每次 a,b互质. ...
- HTTP协议基础篇(帮助理解)
用uml 来描述一个功能是怎样按照时间的顺序完成的 实际的需求(配置网站/配置虚拟主机) 步骤 (1) 打开 apache/conf/httpd.conf 文件 (2)找到hosts文件 c:/win ...
- 图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cross)
Join 连接在日常开发用得比较多,但大家都搞清楚了它们的使用区别吗??一文带你上车~~ 内连接 inner join 内连接是基于连接谓词将俩张表(如A和B)的列组合到一起产生新的结果表,在表中存在 ...