workerman统计在线人数

workerman 统计在线人数实现代码:

服务器端代码

<?php

useWorkerman\Worker;

useWorkerman\Lib\Timer;

require_once__DIR__ . '/Workerman/Autoloader.php';


$worker= newWorker('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>

 functionds(){

        $.get('127.0.0.1:2345',function(data,status){

            console.log("Data: "+ data + "nStatus: "+ status);

            })

     }

// window.setInterval(ds,1000);


ws = newWebSocket("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>

本文来自PHP中文网的workerman教程栏目:https://www.php.cn/workerman/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容