1.优化websocket中的jackpot.hit

This commit is contained in:
2026-05-28 17:02:18 +08:00
parent 6b20b074a9
commit c3ac33ec3d

View File

@@ -47,6 +47,8 @@ class GameWebSocketServer
private static bool $eventBusConsumerStarted = false; private static bool $eventBusConsumerStarted = false;
private static bool $adminSnapshotTickerStarted = false; private static bool $adminSnapshotTickerStarted = false;
private static bool $heartbeatCheckerStarted = false; private static bool $heartbeatCheckerStarted = false;
/** @var bool */
private static bool $liveStateTickerStarted = false;
/** 客户端 60s 内无任何上行报文(含 ping即被主动断开 */ /** 客户端 60s 内无任何上行报文(含 ping即被主动断开 */
private const HEARTBEAT_IDLE_SECONDS = 60; private const HEARTBEAT_IDLE_SECONDS = 60;
@@ -87,6 +89,7 @@ class GameWebSocketServer
self::ensureEventBusConsumer(); self::ensureEventBusConsumer();
self::ensureAdminLiveSnapshotTicker(); self::ensureAdminLiveSnapshotTicker();
self::ensureHeartbeatChecker(); self::ensureHeartbeatChecker();
self::ensureLiveStateTicker();
$queryString = self::extractQueryString($connection, $request); $queryString = self::extractQueryString($connection, $request);
$query = GameWebSocketAuthHelper::parseQueryString($queryString); $query = GameWebSocketAuthHelper::parseQueryString($queryString);
@@ -351,6 +354,33 @@ class GameWebSocketServer
]); ]);
} }
/**
* 兜底:当 gameLiveTicker 未运行/卡死时WS 进程也能驱动对局推进避免对局长期卡在派彩中status=3
*
* - 每秒执行一次 recoverLiveRoundState()内部finalizePayoutGrace + tickAutoDraw
* - 幂等且有锁保护,和 gameLiveTicker 并存也不会破坏一致性
*/
private static function ensureLiveStateTicker(): void
{
if (self::$liveStateTickerStarted) {
return;
}
self::$liveStateTickerStarted = true;
Timer::add(1, static function (): void {
try {
GameLiveService::recoverLiveRoundState();
} catch (Throwable $e) {
Log::channel('ws')->error('live state ticker failed', [
'error' => $e->getMessage(),
]);
}
});
Log::channel('ws')->info('live state ticker started', [
'tick_interval_seconds' => 1,
]);
}
/** /**
* 后台联调:订阅赔率相关主题后立即推送演示帧(库内样例玩家,带 is_test / preview * 后台联调:订阅赔率相关主题后立即推送演示帧(库内样例玩家,带 is_test / preview
* *