test: 测试在宝塔服务器上的配置反应

This commit is contained in:
2026-01-21 09:56:48 +08:00
parent 05b80040f6
commit 43edae2f90
3 changed files with 19 additions and 6 deletions

View File

@@ -197,7 +197,7 @@
// 设置WebSocket服务器地址
const setWebsocketUrl = () => {
if (websocketUrl.value.trim() && websocketUrl.value.startsWith('ws://')) {
if (websocketUrl.value.trim() && (websocketUrl.value.startsWith('ws://') || websocketUrl.value.startsWith('wss://'))) {
addons.forEach(addon => {
addon.fullPath = websocketUrl.value + addon.path;
addon.status = 'disconnected';

View File

@@ -64,7 +64,16 @@ use Ratchet\ConnectionInterface;
use Ratchet\MessageComponentInterface;
// 配置WebSocket服务器
$httpHost = 'localhost'; // 客户端连接时使用的主机名
// Ratchet\App 的 $httpHost 会被用于路由 Host 匹配(默认要求必须等于 ws://<host> 的 host
// 注意Ratchet\App 构造函数内部会把 $httpHost 传给 FlashPolicy::addAllowedAccess()
// 为空会触发 “Invalid domain”。因此这里必须是一个合法域名/IP用 localhost 兜底)。
// 若希望通过任意 IP/域名访问:不要在构造里用空值;而是在 route(...) 的第4个参数传 ''
// 让该路由不限制 Host。
$httpHost = getenv('WS_HTTP_HOST');
$httpHost = ($httpHost === false) ? 'localhost' : trim((string)$httpHost);
if ($httpHost === '') {
$httpHost = 'localhost';
}
$port = getenv('WS_PORT') ?: 8080; // WebSocket服务器端口
$address = '0.0.0.0'; // 监听所有网络接口
@@ -193,7 +202,8 @@ foreach ($current_addon_names as $addonName) {
if (class_exists($webSocketClass)) {
// 注册到/ws/{addonName}路径
$path = '/ws/' . $addonName;
$ratchetApp->route($path, new $webSocketClass(), array('*'));
// 允许任意 Origin并且不限制 Host支持通过任意 IP/域名访问)
$ratchetApp->route($path, new $webSocketClass(), array('*'), '');
echo "已注册WebSocket控制器{$webSocketClass} 到路径 {$path}\n";
$registeredAddons[] = $addonName;
} else {
@@ -260,7 +270,8 @@ class DefaultWebSocketController implements MessageComponentInterface
}
// 注册默认的/ws路径测试控制器
$ratchetApp->route('/ws', new DefaultWebSocketController(), array('*'));
// 默认测试路径同样不限制 Host
$ratchetApp->route('/ws', new DefaultWebSocketController(), array('*'), '');
echo "已注册默认WebSocket测试控制器到路径 /ws\n";
// 缓存WebSocket服务器信息可选用于其他服务查询