Heim  >  Artikel  >  PHP-Framework  >  Wie zählt Workerman die Anzahl der Personen, die online sind?

Wie zählt Workerman die Anzahl der Personen, die online sind?

尚
Original
2019-12-10 15:02:473320Durchsuche

Wie zählt Workerman die Anzahl der Personen, die online sind?

Workerman zählt Online-Personen-Implementierungscode: (Empfohlen: Workerman-Tutorial)

Serverseitiger Code

<?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();

Wenn die client Die Rückruffunktion wird ausgelöst, wenn eine Verbindung mit Workerman hergestellt wird (nachdem der TCP-Drei-Wege-Handshake abgeschlossen ist). Der onConnect-Rückruf wird nur einmal pro Verbindung ausgelöst.

Rückruffunktion wird ausgelöst, wenn die Client-Verbindung von Workerman getrennt wird. Unabhängig davon, wie die Verbindung getrennt wird, wird onClose ausgelöst, sobald die Verbindung getrennt wird. onClose wird nur einmal pro Verbindung ausgelöst.

Kundencode

<?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>

Das obige ist der detaillierte Inhalt vonWie zählt Workerman die Anzahl der Personen, die online sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn