1.重构实时消息WebSocket连接

2.MySQL备份
This commit is contained in:
2026-04-24 13:49:38 +08:00
parent d69412a0f7
commit fd324f2882
54 changed files with 2396 additions and 2638 deletions

View File

@@ -0,0 +1,49 @@
<?php
declare(strict_types=1);
namespace app\admin\controller\test;
use app\common\controller\Backend;
use app\common\library\admin\WebSocketConfigHelper;
use support\Response;
use Webman\Http\Request as WebmanRequest;
/**
* WebSocket 测试状态流period.tick / period.opened
*/
class GameCurrentStatus extends Backend
{
protected ?object $model = null;
public function wsConfig(WebmanRequest $request): Response
{
$response = $this->initializeBackend($request);
if ($response !== null) {
return $response;
}
$subscribeTopics = [
'period.tick',
'period.opened',
'period.locked',
'period.payout',
'bet.accepted',
'wallet.changed',
'auto.spin.progress',
];
return $this->success('', [
'name' => 'ws.period',
'ws_url' => WebSocketConfigHelper::wsUrl(),
'connect_tip' => '连接成功后会自动订阅下列主题;也可在「发送消息」中手动改订阅。未订阅时不会收到业务推送。',
'subscribe_topics' => $subscribeTopics,
'sample_messages' => [
'{"action":"ping"}',
'{"action":"subscribe","topics":["period.tick","period.opened"]}',
'{"action":"subscribe","topics":["bet.accepted","wallet.changed","auto.spin.progress"]}',
],
]);
}
}

View File

@@ -1,32 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller\test;
use app\common\controller\Backend;
use app\common\library\admin\PushChannelConfigHelper;
use support\Response;
use Webman\Http\Request as WebmanRequest;
/**
* 推送测试public-game-period对局公共频道
*/
class PushGamePeriod extends Backend
{
protected ?object $model = null;
public function pushConfig(WebmanRequest $request): Response
{
$response = $this->initializeBackend($request);
if ($response !== null) {
return $response;
}
return $this->success('', [
'url' => PushChannelConfigHelper::wsBaseUrl(),
'app_key' => PushChannelConfigHelper::appKey(),
'channel' => 'public-game-period',
]);
}
}

View File

@@ -1,32 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller\test;
use app\common\controller\Backend;
use app\common\library\admin\PushChannelConfigHelper;
use support\Response;
use Webman\Http\Request as WebmanRequest;
/**
* 推送测试public-operation-notice公告广播频道
*/
class PushOperationNotice extends Backend
{
protected ?object $model = null;
public function pushConfig(WebmanRequest $request): Response
{
$response = $this->initializeBackend($request);
if ($response !== null) {
return $response;
}
return $this->success('', [
'url' => PushChannelConfigHelper::wsBaseUrl(),
'app_key' => PushChannelConfigHelper::appKey(),
'channel' => 'public-operation-notice',
]);
}
}

View File

@@ -1,40 +0,0 @@
<?php
declare(strict_types=1);
namespace app\admin\controller\test;
use app\common\controller\Backend;
use app\common\library\admin\PushChannelConfigHelper;
use support\Response;
use Webman\Http\Request as WebmanRequest;
/**
* 推送测试private-user-{uuid}(用户私有频道)
*/
class PushPrivateUser extends Backend
{
protected ?object $model = null;
public function pushConfig(WebmanRequest $request): Response
{
$response = $this->initializeBackend($request);
if ($response !== null) {
return $response;
}
$uuid = trim((string) ($request->get('uuid') ?? $request->post('uuid') ?? ''));
if ($uuid === '') {
return $this->error(__('Parameter %s can not be empty', ['uuid']));
}
if (strlen($uuid) > 64 || !preg_match('/^[0-9a-zA-Z_-]+$/', $uuid)) {
return $this->error(__('Parameter error'));
}
return $this->success('', [
'url' => PushChannelConfigHelper::wsBaseUrl(),
'app_key' => PushChannelConfigHelper::appKey(),
'channel' => 'private-user-' . $uuid,
]);
}
}