WorkerMan 入门学习之(三)基础教程-Timer类的使用

1、ServerTimer.php 代码:

<?php
/**
 * 定时器学习
 */
require_once __DIR__ . ‘/Workerman/Autoloader.php‘;
use Workerman\Worker;
use Workerman\Lib\Timer;
// 创建一个容器
$worker = new Worker(‘websocket://0.0.0.0:12345‘);
// 连接回调
$worker->onConnect = function ($connection) {
   // 每10s 检查客户端是否有name属性
   Timer::add(10, function () use ($connection) {
        if (!isset($connection->name)) {
            $connection->close("auth timeout and close");
        }
    }, null, false);
};

$worker->onMessage = function ($connection, $data) {
    if (!isset($connection->name)) {
        $data = json_decode($data,true);
        if (!isset($data[‘name‘]) || !isset($data[‘password‘])) {
            return $connection->close("auth fail and close");
        }
        // 如果客户端name存在,mysql,这里使用动态给对象赋值属性name,标记该对象已经通过验证
        $connection->name = $data[‘name‘];
        // 广播给所有用户,该用户加入
        return broadcast($connection->name . " join \n");
    }
    // 简单的连接器
    return broadcast($connection->name . ‘ said : ‘ . $data);
};

function broadcast($msg)
{
    // 引入$worker 对象
    global $worker;
    // $worker->connections 为客户端连接的所有对象
    foreach ($worker->connections as $connection) {
        if (!isset($connection->name)) {
            //忽略掉
            continue;
        }
        $connection->send($msg);
    }
}

$worker::runAll();/

2、开启服务

3、打开谷歌浏览器测试

(1)没有携带name和password

  

(2)携带name和password

  

(3)两个客户端互相通信

  客户端001

  

  客户端002

  

时间: 2024-12-28 20:41:36

WorkerMan 入门学习之(三)基础教程-Timer类的使用的相关文章

python入门经典必备推荐基础教程

绝对是python初学者入门必备,比learning python写的好100倍,远超python基础教程n个数量级 下载地址 http://pan.baidu.com/s/1jGwzpeY 更多python学习资料 http://dou.bz/35ODPo

Qt快速入门学习笔记(基础篇)

本文基于Qter开源社区论坛版主yafeilinux编写的<Qt快速入门系列教程目录>,网址:http://bbs.qter.org/forum.php?mod=viewthread&tid=193.参考书为基于该系列教程<Qt Creator快速入门>和<Qt及Qt Quick开发实战精解> 1.关联Qt库.如果是分别安装的Qt Creator和Qt库,而不是安装集成Qt Creator和Qt库的SDK,则需要手动关联Qt库.打开工具→选项菜单,然后选择“构建

WorkerMan 入门学习之(二)基础教程-Connection类的使用

1.TcpConnection类 的使用 一.简单的TCP测试 Server.php <?php require_once __DIR__.'/Workerman/Autoloader.php'; use Workerman\Worker; $worker = new Worker('websocket://0.0.0.0:80');// 连接回调 $worker->onConnect = function ($connection){ echo "connection succes

python基础学习笔记——Python基础教程(第2版 修订版)第三章(字符串)

#字符串 '%s plus %s equals %s'%(1,2,3) %10f %pi %10.2f %5s %'guido van poee %.*s %(5,'gjffuygv')%010.2 0000003.14%-10.2f #字符串方法 string.letters 包含所有字母的字符串 #find    title.find("sdf")  没有返回-1 #join  添加元素 #lower #replace("isj,"ss") #'1+2

前端学习,零基础教程,2019年必看资料

相信大部分小伙伴自学前端的时候毫无头绪,不知道自己该做什么,学习什么,要学的东西太多太乱?既然你看到了这篇文章,那么问题就不大,小编为你整理了一份最全的学习路线,赶快收藏吧!干货福利内容 在文末↓一.HTML.CSS基础.JavaScript语法基础.学完基础后,可以仿照电商网站(例如京东.小米)做首页的布局.二.JavaScript语法进阶.包括:作用域和闭包.this和对象原型等.相信我,JS语法,永远是面试中最重要的部分.三.jQuery.Ajax等.jQuery没有过时,它仍然是前端基础

Linux 入门学习之bash基础原理之一

Linux入门之bash基础 编程语言分类: 机器语言.汇编语言.高级语言 静态语言:编译型语言 特点: 变量为强类型 实现转化为一定的可执行格式 常见:C.C++.JAVA.C#.Object-C 注意:一般需要解释器的编程语言一般为静态语言 动态语言:解释性语言 特点: 变量未弱类型,边解释边执行 常见: PHP.SHELL.python.perl lua : 嵌入式脚步语言 编程语言的模型.思想分类 面向过程: shell,C 面向对象: java,python,perl,c++ 一个变量

记JavaScript的入门学习(三)

2016.12.6晚上十点半完成JavaScript的第二章学习,看了点第三章的开头总述,都说原生js每一个知识点都可以分分钟钟让你放弃,而我在努力探索着.月末的时候就回家放假了,希望在家也可以有个小小的练习,开学来的时候可以把js过一遍,啊还有jQuery呢!!! 三.判断.循环和函数(检查用户输入的有效性) 3.1    选择语句--if语句和swith语句(程序具有一定的逻辑判断能力) 3.1.1   如下代码:(将条件表达式的结果赋值给变量) 3.1.2   if语句        "如

WorkerMan 入门学习之(四)GatewayWorker框架使用

GatewayWorker是基于Workerman开发的一个可分布式部署的TCP长连接框架,专门用于快速开发TCP长连接应用,例如app推送服务端.即时IM服务端.游戏服务端.物联网.智能家居等等 文档地址:http://www.workerman.net/gatewaydoc/ 一.测试官方DEMO(Windows 版本) 1.下载demo 2.解压到任意位置,我这里为:D:\phpStudy\PHPTutorial\WWW\GatewayWorker 3.进入GatewayWorker目录

Python入门学习-DAY09-函数基础与参数

函数基础 一 定义函数的三种形式 1.1 无参函数 def foo(): print('from foo') foo() 1.2 有参函数 def bar(x,y): print(x,y) bar(1,2) 1.3 空函数 def func(): pass def upload(): pass def download(): pass def login(): pass def register(): pass def ls(): pass 二 调用函数的三种形式 2.1 语句形式 def fo