1.优化websocket中的jackpot.hit
This commit is contained in:
@@ -20,20 +20,25 @@ final class GameWebSocketSubscriptionRegistry
|
||||
/** @var array<string, array<int, true>> topic => { connection_id: true } */
|
||||
private static array $topicIndex = [];
|
||||
|
||||
/** @var array<int, array{topics: list<string>, user_id: int, last_seen_at: int, remote_ip: string}> */
|
||||
/** @var array<int, array{topics: list<string>, user_id: int, mode: string, last_seen_at: int, remote_ip: string}> */
|
||||
private static array $connectionMeta = [];
|
||||
|
||||
/**
|
||||
* 注册新连接(onConnect 调用)。
|
||||
*/
|
||||
public static function registerConnection(int $connectionId, int $userId, string $remoteIp = ''): void
|
||||
public static function registerConnection(int $connectionId, int $userId, string $mode = 'mobile', string $remoteIp = ''): void
|
||||
{
|
||||
if ($connectionId <= 0) {
|
||||
return;
|
||||
}
|
||||
$mode = trim($mode);
|
||||
if ($mode !== 'admin') {
|
||||
$mode = 'mobile';
|
||||
}
|
||||
self::$connectionMeta[$connectionId] = [
|
||||
'topics' => [],
|
||||
'user_id' => max(0, $userId),
|
||||
'mode' => $mode,
|
||||
'last_seen_at' => time(),
|
||||
'remote_ip' => $remoteIp,
|
||||
];
|
||||
@@ -139,6 +144,11 @@ final class GameWebSocketSubscriptionRegistry
|
||||
return self::$connectionMeta[$connectionId]['user_id'] ?? 0;
|
||||
}
|
||||
|
||||
public static function isAdmin(int $connectionId): bool
|
||||
{
|
||||
return (self::$connectionMeta[$connectionId]['mode'] ?? '') === 'admin';
|
||||
}
|
||||
|
||||
/**
|
||||
* 找出所有 last_seen_at 早于 $cutoff 的连接 id(用于服务端主动关闭僵尸连接)。
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user