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

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

ivan

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

4827 3 2
3個(gè)回答

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) {
        // 給鏈接對(duì)象臨時(shí)賦值一個(gè)lastTime屬性記錄上次接收消息的時(shí)間
        $connection->lastTime = time();
};
$worker->onWorkerStart = function($worker) {
        // 每秒檢查一次所有鏈接是否心跳超時(shí)
        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ù)的時(shí)間
        $connection->lastTime = time();
        $connection->send($data);
};
Worker::runAll();

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

  • 暫無評(píng)論
ivan

多謝老大?。?!^_^

  • 暫無評(píng)論
walkor 打賞

不客氣

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