>  기사  >  PHP 프레임워크  >  워커맨은 온라인에 있는 사람의 수를 어떻게 계산하나요?

워커맨은 온라인에 있는 사람의 수를 어떻게 계산하나요?

尚
원래의
2019-12-10 15:02:473338검색

워커맨은 온라인에 있는 사람의 수를 어떻게 계산하나요?

workerman은 온라인 사용자 구현 코드를 계산합니다. (권장: workermantutorial)

서버 측 코드#🎜 🎜#

<?php
use Workerman\Worker;
use Workerman\Lib\Timer;
require_once __DIR__ . &#39;/Workerman/Autoloader.php&#39;;

$worker = new Worker(&#39;websocket://127.0.0.1:2345&#39;);
// 全局变量,保存当前进程的客户端连接数
$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 3방향 핸드셰이크가 완료된 후) 트리거되는 콜백 함수입니다. onConnect 콜백은 연결당 한 번만 트리거됩니다.

Workerman에서 클라이언트 연결이 끊길 때 호출되는 콜백 함수입니다. 연결이 어떻게 끊어지든 연결이 끊어지는 즉시 onClose가 트리거됩니다. onClose는 연결당 한 번만 트리거됩니다.

클라이언트 코드

<?php

?>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
 function ds(){
		$.get(&#39;127.0.0.1:2345&#39;,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(&#39;tom&#39;);
    //alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
    //alert("收到服务端的消息:" + e.data);
    console.log("收到服务端的消息:" + e.data);
};

</script>

위 내용은 워커맨은 온라인에 있는 사람의 수를 어떻게 계산하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.