• 技术文章 >php框架 >Workerman

    workerman怎么统计在线人数

    尚2019-12-10 15:02:47原创1933

    workerman统计在线人数实现代码:(推荐:workerman教程

    服务器端代码

    <?php
    use Workerman\Worker;
    use Workerman\Lib\Timer;
    require_once __DIR__ . '/Workerman/Autoloader.php';
    
    $worker = new Worker('websocket://127.0.0.1:2345');
    // 全局变量,保存当前进程的客户端连接数
    $connection_count = 0;
    
    // 这个例子中进程数必须为1
    $worker->count = 1;
    $worker->onConnect = function($connection)
    {
        // 有新的客户端连接时,连接数+1
        global $connection_count;
        
        ++$connection_count;
        echo "now connection_count=$connection_count\n";
    };
    // 进程启动时设置一个定时器,定时向所有客户端连接发送数据
    $worker->onWorkerStart = function($worker)
    {
        // 定时,每10秒一次
        Timer::add(1, function()use($worker)
        {
            global $connection_count;
            // 遍历当前进程所有的客户端连接,发送当前服务器的时间
            foreach($worker->connections as $connection)
            {
                $connection->send($connection_count);
            }
        });
    };
    $worker->onClose = function($connection)
    {
        // 客户端关闭时,连接数-1
        global $connection_count;
        $connection_count--;
        echo "now connection_count=$connection_count\n";
    };
    // 运行worker
    Worker::runAll();

    当客户端与Workerman建立连接时(TCP三次握手完成后)触发的回调函数。每个连接只会触发一次onConnect回调。

    当客户端连接与Workerman断开时触发的回调函数。不管连接是如何断开的,只要断开就会触发onClose。每个连接只会触发一次onClose。

    客户端代码

    <?php
    
    ?>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script>
     function ds(){
    		$.get('127.0.0.1:2345',function(data,status){
    			console.log("Data: " + data + "nStatus: " + status);
    			})
    	 }
    // window.setInterval(ds,1000);
    
    ws = new WebSocket("ws://127.0.0.1:2345");
    ws.onopen = function() {
        //alert("连接成功");
        //ws.send('tom');
        //alert("给服务端发送一个字符串:tom");
    };
    ws.onmessage = function(e) {
        //alert("收到服务端的消息:" + e.data);
        console.log("收到服务端的消息:" + e.data);
    };
    
    </script>

    以上就是workerman怎么统计在线人数的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:workerman
    上一篇:workerman启动错误解决方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • workerman如何保持连接• workerman无法启动的原因与解决方法• workerman怎么装• workerman启动错误解决方法
    1/1

    PHP中文网