修复推送报错
This commit is contained in:
41
app/process/WebmanPushServer.php
Normal file
41
app/process/WebmanPushServer.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?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 全部失败。
|
||||||
|
* 延后一拍再 listen;Timer 第四参数须为 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']);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Webman\Push\Server;
|
use app\process\WebmanPushServer;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'server' => [
|
'server' => [
|
||||||
'handler' => Server::class,
|
'handler' => WebmanPushServer::class,
|
||||||
'listen' => config('plugin.webman.push.app.websocket'),
|
'listen' => config('plugin.webman.push.app.websocket'),
|
||||||
'count' => 1, // 必须是1
|
'count' => 1, // 必须是1
|
||||||
'reloadable' => false, // 执行reload不重启
|
'reloadable' => false, // 执行reload不重启
|
||||||
|
|||||||
Reference in New Issue
Block a user