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

單用workerman,如何實現(xiàn)gateway的心跳?

ivan

如題,單用workerman,如何實現(xiàn)gateway的心跳? 客戶端可以做成定時發(fā)包,但是意外掉線時,服務(wù)器可能不會及時的收到通知。

4822 3 2
3個回答

walkor 打賞
<?php
require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\WebServer;
use Workerman\Lib\Timer;
define('PING_TIMEOUT', 5);

$worker = new Worker('tcp://0.0.0.0:12345');
$worker->onConnect = function($connection) {
        // 給鏈接對象臨時賦值一個lastTime屬性記錄上次接收消息的時間
        $connection->lastTime = time();
};
$worker->onWorkerStart = function($worker) {
        // 每秒檢查一次所有鏈接是否心跳超時
        Timer::add(1, function()use($worker) {
            $time_now = time();
            foreach($worker->connections as $connection) {
                if($time_now - $connection->lastTime > PING_TIMEOUT) {
                    $connection->close('ping timeout and close');
                }
            }
        });
};
$worker->onMessage = function($connection, $data) {
        // 記錄本次客戶端發(fā)來數(shù)據(jù)的時間
        $connection->lastTime = time();
        $connection->send($data);
};
Worker::runAll();

上面是定時檢查所有鏈接心跳超時。也可以給每個鏈接設(shè)置定時器,檢查心跳超時。

  • 暫無評論
ivan

多謝老大?。。_^

  • 暫無評論
walkor 打賞

不客氣

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