心跳

注意:长连接应用必须加心跳,否则连接可能由于长时间未通讯被路由节点强行断开。

心跳作用主要有两个:

1、客户端定时给服务端发送点数据,防止连接由于长时间没有通讯而被某些节点的防火墙关闭导致连接断开的情况。

2、服务端可以通过心跳来判断客户端是否在线,如果客户端在规定时间内没有发来任何数据,就认为客户端下线。这样可以检测到客户端由于极端情况(断电、断网等)下线的事件。

建议值:

建议心跳间隔小于60秒

心跳示例

<?php
require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\Lib\Timer;// 心跳间隔25秒
define('HEARTBEAT_TIME', 25);$worker = new Worker('text://0.0.0.0:1234');$worker->onMessage = function($connection, $msg) {// 给connection临时设置一个lastMessageTime属性,用来记录上次收到消息的时间$connection->lastMessageTime = time();// 其它业务逻辑...
};// 进程启动后设置一个每秒运行一次的定时器
$worker->onWorkerStart = function($worker) {Timer::add(1, function()use($worker){$time_now = time();foreach($worker->connections as $connection) {// 有可能该connection还没收到过消息,则lastMessageTime设置为当前时间if (empty($connection->lastMessageTime)) {$connection->lastMessageTime = $time_now;continue;}// 上次通讯时间间隔大于心跳间隔,则认为客户端已经下线,关闭连接if ($time_now - $connection->lastMessageTime > HEARTBEAT_TIME) {$connection->close();}}});
};Worker::runAll();

转载: http://doc.workerman.net/faq/heartbeat.html

workman 心跳相关推荐

  1. php 如何实现心跳包,Socket心跳机制-JS+PHP实现

    本文是我在实际工作中用到的Socket通信,关于心跳机制的维护方式,特意总结了一下,希望对朋友们有所帮助. Socket应用:首先Socket 封装了tcp协议的,通过长连接的方式来与服务器通信,是由 ...

  2. workman实现websocket

    workman实现websocket即时通讯很方便简单.根据官方文档的案例来实现: https://www.workerman.net/doc/workerman/getting-started/si ...

  3. 如何使用workman为laravel项目添加websocket在线聊天沟通?【从0开始教】

    第一步, composer require workerman/gateway-worker 第二步, 创建commond php artisan make:commond WorkermanComm ...

  4. ThinkPHP5中使用workman框架与硬件设备蓝牙锁通讯

    通篇分为三大块:服务器.蓝牙锁.APP 先说服务器: 使用的是TP5.workman框架使用composer安装的 安装wm可直接参考TP5的官方手册,讲解的很细致https://www.kanclo ...

  5. tp5+workman

    tp5+workman composer require topthink/think-worker=1.0.*   可能会存在版本问题 转载于:https://www.cnblogs.com/wxt ...

  6. php 长连接心跳_支持gRPC长链接,深度解读Nacos2.0架构设计及新模型

    作者 | 杨翊(席翁) Nacos PMC 来源|阿里巴巴云原生公众号 Nacos 简介 Nacos 在阿里巴巴起源于 2008 年五彩石项目,该项目完成了微服务拆分和业务中台建设,随着云计算和开源环 ...

  7. 心跳实现_真强啊!建议每一位Java程序员都读读Dubbo心跳设计的源码...

    # 前言 谈到RPC肯定绕不开TCP通信,而主流的RPC框架都依赖于Netty等通信框架,这时候我们还要考虑是使用长连接还是短连接: 短连接:每次通信结束后关闭连接,下次通信需要重新创建连接:优点就是 ...

  8. MQTT 心跳和keepalive配置

    MQTT 心跳和keepalive配置 内容: 正常MQTT 服务器端会配置一个超时时间,一般为60s, 在这个时间段内一个连接如果没有数据传输的话,服务端会主动断开连接以释放资源, 有两种方式可以规 ...

  9. websocket心跳链接代码_WebSocket原理与实践(五)--心跳及重连机制

    在使用websocket的过程中,有时候会遇到网络断开的情况,但是在网络断开的时候服务器端并没有触发onclose的事件.这样会有:服务器会继续向客户端发送多余的链接,并且这些数据还会丢失.所以就需要 ...

  10. oracle rac对心跳要求_关于心跳网络引起的Oracle RAC的节点驱逐(不是实例驱逐)...

    关于心跳网络引起的Oracle RAC的节点驱逐(不是实例驱逐) 问: 假设如下场景:4个节点rac,心跳线走的是千m网络交换机,若是该千M网络交换机断电,我想知道crs的驱逐节点的算法是怎么样的? ...

最新文章

  1. AI 一分钟 | 谷歌发布72量子比特处理器,或将为机器学习应用提供加速;百度已经发起对景驰撤诉,但不会对王劲撤诉
  2. Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库
  3. 微处理器含有高速缓存和什么_天天说芯片,芯片到底是什么?
  4. org manual翻译--2.1 大纲
  5. Beaglebone bootloader杂谈
  6. linux直接用iso文件装服务,linux系统安装iso文件方法
  7. ubuntu 升级python3_ubuntu16.04安装python3
  8. CSS实现三角形的方法--拓展
  9. You need to use a Theme.AppCompat theme (or descendant) with this activity
  10. 韩顺平图解Java设计模式
  11. win10 win11 创建共享文件夹 mac 苹果电脑共享 无internet 安全,你的电脑只能访问本地网络中的其它设备 共享文件夹会导致本地电脑无法上网,
  12. php 牛顿冷却定律,基于用户投票的排名算法(四):牛顿冷却定律
  13. 国产手机再次发力,是否可以阻击三星苹果
  14. 游戏本自动掉帧_玩游戏掉帧怎么办?
  15. 吕文翰 php,自己动手打造基于 WKWebView 的混合开发框架(二)——js 向 Native 一句话传值并反射出 Swift 对象执行指定函数...
  16. 知乎创意总监、Dine 设计团队创始人 @disinfeqt :设计、音乐
  17. 802.1X与portal的无线认证
  18. 图片灯箱插件——lightBox
  19. unity3d中如何将Hierarchy中的物体批量拖到Inspector中的数组中?
  20. 导弹拦截(DP LIS)

热门文章

  1. Python 面向对象一(转载)
  2. Matlab学习(可以用MATLAB作曲)
  3. 《构建之法》1-5章读后感
  4. 两个网口芯片接一个变压器_电路中网络变压器件选型和PCB
  5. matlab 连续相同数据库,MATLAB向量:防止来自相同范围的连续值
  6. java安卓开发异步任务_Android笔记4-android之多线程和异步任务
  7. 深入解读Linux内存管理系列(7)——伙伴系统
  8. gdb调试时的问题Missing separate debuginfos, use: debuginfo-install glibc-XXX
  9. 数据挖掘-----Apriori算法
  10. python中的或运算_python入门:if语句中的逻辑运算符