服务端

<?php
class TimerServer
{private $serv;public function __construct() {$this->serv = new swoole_server("0.0.0.0", 9501);$this->serv->set(array('worker_num' => 8,'daemonize' => false,'max_request' => 10000,'dispatch_mode' => 2,'debug_mode'=> 1 ,'heartbeat_check_interval' => 10));$this->serv->on('WorkerStart', array($this, 'onWorkerStart'));$this->serv->on('Connect', array($this, 'onConnect'));$this->serv->on('Receive', array($this, 'onReceive'));$this->serv->on('Close', array($this, 'onClose'));$this->serv->start();}public function onWorkerStart( $serv , $worker_id) {// 在Worker进程开启时绑定定时器echo "onWorkerStart\n";// 只有当worker_id为0时才添加定时器,避免重复添加if( $worker_id == 0 ) {//$this->serv->addtick(5000);<?php
class TimerServer
{private $serv;public function __construct() {$this->serv = new swoole_server("0.0.0.0", 9501);$this->serv->set(array('worker_num' => 8,'daemonize' => false,'max_request' => 10000,'dispatch_mode' => 2,'debug_mode'=> 1 ,'heartbeat_check_interval' => 10));$this->serv->on('WorkerStart', array($this, 'onWorkerStart'));$this->serv->on('Connect', array($this, 'onConnect'));$this->serv->on('Receive', array($this, 'onReceive'));$this->serv->on('Close', array($this, 'onClose'));$this->serv->start();}public function onWorkerStart( $serv , $worker_id) {// 在Worker进程开启时绑定定时器echo "onWorkerStart\n";// 只有当worker_id为0时才添加定时器,避免重复添加if( $worker_id == 0 ) {//$this->serv->addtick(5000);swoole_timer_tick(5000,function($id){echo "time\n";});}}public function onConnect( $serv, $fd, $from_id ) {echo "Client {$fd} connect\n";}public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {echo "Get Message From Client {$fd}:{$data}\n";}public function onClose( $serv, $fd, $from_id ) {echo "Client {$fd} close connection\n";}
}
new TimerServer();

客户端:

<?php
class Client
{private $client;public function __construct() {$this->client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);$this->client->on('Connect', array($this, 'onConnect'));$this->client->on('Receive', array($this, 'onReceive'));$this->client->on('Close', array($this, 'onClose'));$this->client->on('Error', array($this, 'onError'));}public function connect() {$fp = $this->client->connect("127.0.0.1", 9501 , 1);if( !$fp ) {echo "Error: {$fp->errMsg}[{$fp->errCode}]\n";return;}}public function onReceive( $cli, $data ) {echo "Get Message From Server: {$data}\n";}public function onConnect( $cli) {fwrite(STDOUT, "Enter Msg:");swoole_event_add(STDIN, function($fp){global $cli;fwrite(STDOUT, "Enter Msg:");$msg = trim(fgets(STDIN));$cli->send( $msg );});swoole_timer_tick(5000, function () use ($cli) {$cli->send('beatheart');
});}public function onClose( $cli) {echo "Client close connection\n";}public function onError() {}public function send($data) {$this->client->send( $data );}public function isConnected() {return $this->client->isConnected();}
}
$cli = new Client();
$cli->connect();

server

client

swoole 服务端heartbeat_check_interval心跳检测 客户端 swoole_timer_tick 发送心跳包 这里只是个demo参考相关推荐

  1. Qt 多线程TCP服务端一键关闭所有客户端

    Qt 多线程TCP服务端一键关闭所有客户端 任务描述: 实现多线程TCP服务端一键关闭所有客户端的连接. 解决过程: 1.Qt的服务端提供了close的功能,但是只用来不响应新接入的客户端. 手册中是 ...

  2. 启动go服务_内网穿透工具 FRP公网服务端、内网客户端快速配置文件说明

    内网穿透工具 FRP 公网服务端.内网客户端 frps.ini .frpc.ini 配置文件常用设置展示及说明 公网服务端 frps.ini 配置文件常用设置 公网服务端配置文件:frps.ini [ ...

  3. git的CentOS服务端安装和windows客户端的使用

    git的CentOS服务端安装和windows客户端的使用 此教程以 ***vps CentOS 6 x64 的系统为环境,搭建 git 服务端.windows 7 系统为客户端. git客户端 在W ...

  4. socket服务端处理多个客户端的请求学习理解

    socket服务端处理多个客户端的请求: while(true){ Socket s=ss.accept(); new WorkThread(s).start(); } class WorkThrea ...

  5. 【Socket编程】Python实现一个服务端,多个客户端接入

    Python实现一个服务端,多个客户端接入 1. 服务器端 服务器端每一次接收客户端连接,都要fork一个进程来完成,如果单纯使用socket模块来实现,是不容易完成多线程接入的.为了方便,可以直接使 ...

  6. 征服账号服务器,最新中文征服服务端(带架设教程+客户端补丁+需要的工具)10.13日更新...

    最新中文征服服务端(带架设教程+客户端补丁+需要的工具)10.13日更新 10月9号版本更新信息: 增加了 头像. 头像已经很完美了 天石 , 挖矿, 宝石效果 高级宝石 可以放出 动画 数据库已经改 ...

  7. android客户端和服务端交互,谈谈android客户端和网站数据交互的实现

    android客户端一般不直接访问网站数据库,而是像浏览器一样发送get或者post请求,然后网站返回客户端能理解的数据格式,客户端解析这些数据,显示在界面上,常用的数据格式是xml和json. 可以 ...

  8. SSR 服务端渲染与 CSR 客户端渲染

    SSR 服务端渲染与 CSR 客户端渲染 SSR 服务端渲染 CSR 客户端渲染 本文要点: 介绍 SSR 服务端渲染概念.优点.缺点.案例及常用框架. 介绍 CSR 服务端渲染概念.优点.缺点. S ...

  9. 热血江湖服务端 linux,热血江湖V2.0商业服务端百宝阁 GM工具+客户端+架设教程

    热血江湖V2.0商业服务端百宝阁 GM工具+客户端+架设教程 本人没有测试过!!!本人没有测试过!!!本人没有测试过!!! 可升级120级,个别服升150级8转 爆率低 特别是强化石 强化石可以叠加 ...

最新文章

  1. 使用MATLAB实现的小算法练习1
  2. swift_046(Swift map,filter, reduce方法)
  3. python 缺点-Python的3个主要缺点及其解决方案
  4. 重载session存储方式–session_set_save_handler()
  5. 如何拉取k8s镜像_K8s 从懵圈到熟练 – 镜像拉取这件小事
  6. futuretask java 并发请求_Java并发案例04---Future和 FutureTask
  7. 计算机专业开题报告指导老师意见评语,开题报告指导教师评语
  8. UI设计素材|弹窗设计技巧,快get
  9. jBPM与业务系统集成-通过定制Task Instance等方式实现
  10. 大学生python心得1000字_大学生读书心得1000字3篇
  11. Delphi7--基本数据类型和表达式
  12. Win10防止Windows安全中心(Windows Defender)乱删文件
  13. HTML视频自动播放
  14. 支付宝前端团队详解基于Node.jsWeb框架Chair
  15. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作
  16. 九九乘法c语言的编程,C语言九九乘法表
  17. 浙江电信IPTV+上网 Padavan老毛子固件单线复用
  18. 【微信小程序】使用云存储存入指定文件夹
  19. node 打开浏览器
  20. 视频监控发展的技术难点在哪里?

热门文章

  1. 吴恩达机器学习7——支持向量机SVM
  2. 全网最全的git命令大全
  3. CI -持续集成及相关概念
  4. [dhtmlx]group task 失效问题解决
  5. 购物车及商品php代码_简单的php购物车代码
  6. vue中获取输入框中得到值_如何获取vue input的值
  7. java中输出拼json,java poi 解析excel 输出json 并且拼接字符串显示到jsp
  8. 为什么java button 不能用 显示红色_Java中的整型包装类值的比较为什么不能用==比较?原因是因为缓存...
  9. 服务器root账号用户名和密码忘记了,宝塔忘记后台管理员账号密码怎么办?教你用这条命令轻松搞定...
  10. 怎么添加本地音乐_编辑视频如何添加本地音乐?原来方法这么简单,用手机就能制作...