zoukankan      html  css  js  c++  java
  • WorkerMan 入门学习之(三)基础教程-Timer类的使用

    1、ServerTimer.php 代码:

    <?php
    /**
     * 定时器学习
     */
    require_once __DIR__ . '/Workerman/Autoloader.php';
    use WorkermanWorker;
    use WorkermanLibTimer;
    // 创建一个容器
    $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 
    ");
        }
        // 简单的连接器
        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

      

     

  • 相关阅读:
    [Other] 应用下载网站的APK/IPA等常见MIME设置
    [AIR] StageWebView可以和js通信
    [JavaScript] 判断设备类型,加载相应css
    [HTML] H5在webApp中的注意事项
    [JavaScript] css将footer置于页面最底部
    python 装饰器
    python while...else和for...else语法
    Linux haproxy配置参数
    Linux haproxy基础
    Linux ospf+lvs
  • 原文地址:https://www.cnblogs.com/tinywan/p/7420622.html
Copyright © 2011-2022 走看看