Files
webman-buildadmin/app/process/WebmanPushServer.php
2026-04-20 15:16:44 +08:00

42 lines
1.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
namespace app\process;
use support\Log;
use Throwable;
use Webman\Push\Server;
use Workerman\Timer;
use Workerman\Worker;
/**
* Workerman 5 在 Fiber 中拉起 Push 时,内嵌 HTTP API默认 3232可能与事件循环初始化时序冲突导致本机无法连接、业务 trigger 全部失败。
* 延后一拍再 listenTimer 第四参数须为 false否则会按 repeat 每 0.01s 重复创建 Worker。
*/
final class WebmanPushServer extends Server
{
public function onWorkerStart($worker): void
{
$apiListen = $this->apiListen;
$self = $this;
Timer::add(
0.01,
static function () use ($apiListen, $self): void {
try {
$apiWorker = new Worker($apiListen);
$apiWorker->onMessage = [$self, 'onApiClientMessage'];
$apiWorker->listen();
} catch (Throwable $e) {
Log::error('WebmanPushServer HTTP API listen failed: ' . $e->getMessage());
}
},
[],
false
);
Timer::add($this->keepAliveTimeout / 2, [$this, 'checkHeartbeat']);
Timer::add($this->webHookDelay, [$this, 'webHookCheck']);
}
}