国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman/push 如何統(tǒng)計 在線人數(shù)呢

問題描述

我看文檔已經(jīng)實現(xiàn)了可以 服務(wù)端主動發(fā)送消息 客戶端也可以收到
但是怎么統(tǒng)計在線人數(shù)呢 還有關(guān)閉了瀏覽器 怎么樣統(tǒng)計下線的

1612 4 23
4個回答

我用 GatewayWorker + redis 做的 onConnect incr onClose decr

  • 暫無評論
walkor 打賞

自定義進(jìn)程定時獲取在線人數(shù)廣播給所有在線用戶
process/Status.php

<?php

namespace process;

use app\Request;
use Webman\Push\Api;
use Workerman\Timer;
use Workerman\Worker;
use think\facade\Db;

class Status
{
    public function __construct()
    {
        Timer::add(3, function () {
            $this->status();
        });
    }

    public function status()
    {
        static $user_count = 0, $page_count = 0;
        $api = new Api(
            'http://127.0.0.1:3232',
            config('plugin.webman.push.app.app_key'),
            config('plugin.webman.push.app.app_secret')
        );
        $result = $api->get('/channels', ['filter_by_prefix' => 'user', 'info' => 'subscription_count']);
        if (!$result || $result['status'] != 200) {
            return;
        }
        $channels = $result['result']['channels'];
        $user_count_now = count($channels);
        $page_count_now = 0;
        foreach ($channels as $channel) {
            $page_count_now += $channel['subscription_count'];
        }
        if ($page_count_now == $page_count && $user_count_now === $user_count) {
            return;
        }
        $user_count = $user_count_now;
        $page_count = $page_count_now;

        $api->trigger('online-page', 'update_online_status', "當(dāng)前<b>$user_count</b>人在線,共打開<b>$page_count</b>個頁面");
    }
}

自定義進(jìn)程配置文件
config/process.php

<?php
use Workerman\Worker;
return [
    // ...其它配置...

    'status'  => [
        'handler'  => process\Status::class
    ]
];

前端js代碼

var connection = new Push({
    url: 'wss://xxx.com',
    app_key: 'xxxx',
});
function update_online_status(status) {
    $('#online_status').html(status);
}
var online_channel = connection.subscribe('online-page');
online_channel.on('update_online_status', update_online_status);
var user_channel = connection.subscribe('user-<?=session()->getId()?>');
user_channel.on('update_online_status', update_online_status);

以上是workerman站點底部實時在線統(tǒng)計的代碼,效果類似下面,你可以參考下
截圖

Le

插眼

  • 暫無評論
W

學(xué)習(xí)了

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??