跳到主要内容

Sessions 命名空间 API 文档

Sessions 命名空间提供了服务器连接管理的完整功能,包括连接状态检查、会话管理、桥接对象获取等核心操作。

命名空间概述

declare namespace sessions {
// 服务器连接管理相关函数
}

函数详解

IsAlive()

功能描述: 检查指定的服务器会话是否处于活跃状态(在线)。

语法:

function IsAlive(session: Session): boolean

参数:

  • session (Session): 要检查的服务器会话对象

返回值: boolean - 如果服务器在线返回 true,否则返回 false

使用示例:

const session = sessions.GetSessions()[0];
if (sessions.IsAlive(session)) {
logger.info("服务器在线");
} else {
logger.info("服务器离线");
}

注意事项:

  • 会话对象必须是有效的 Session 实例
  • 返回结果反映实时连接状态

Remove()

功能描述: 主动断开已连接到 EasyBot 的服务器连接,强制移除指定会话。

语法:

function Remove(session: Session): void

参数:

  • session (Session): 要断开的服务器会话对象

返回值: 无

使用示例:

const session = sessions.GetSessions()[0];
sessions.Remove(session);
logger.info("服务器连接已断开");

注意事项:

  • 这是主动断开操作,会立即终止连接
  • 断开后该会话对象将不再有效
  • 建议在断开前保存必要的数据

GetBridge() - 通过会话获取

功能描述: 通过服务器会话对象获取对应的桥接对象,用于与服务器进行交互。

语法:

function GetBridge(session: Session): Bridge

参数:

  • session (Session): 服务器会话对象

返回值: Bridge - 对应的桥接对象

使用示例:

const session = sessions.GetSessions()[0];
const bridge = sessions.GetBridge(session);
bridge.SendMessageToAllPlayer("Hello from EasyBot!");

注意事项:

  • 会话必须处于活跃状态
  • 返回的桥接对象可用于所有服务器操作

GetBridge() - 通过令牌获取

功能描述: 通过服务器身份令牌获取对应的桥接对象,提供另一种获取桥接对象的方式。

语法:

function GetBridge(token: string): Bridge

参数:

  • token (string): 服务器的身份令牌

返回值: Bridge - 对应的桥接对象

使用示例:

const serverToken = "your-server-token-here";
const bridge = sessions.GetBridge(serverToken);
if (bridge) {
bridge.SendMessageToAllPlayer("通过令牌连接成功!");
}

注意事项:

  • 令牌必须是有效且已注册的服务器令牌
  • 如果令牌无效或服务器离线,可能返回 null 或抛出异常

GetSessions()

功能描述: 获取所有当前已连接到 EasyBot 的服务器会话列表。

语法:

function GetSessions(): ArrayLike<Session>

参数: 无

返回值: ArrayLike<Session> - 包含所有活跃会话的类数组对象

使用示例:

const sessions = sessions.GetSessions();
logger.info(`当前连接的服务器数量: ${sessions.length}`);

for (let i = 0; i < sessions.length; i++) {
const session = sessions[i];
logger.info(`服务器 ${i + 1}: ${session.id}`);
}

注意事项:

  • 返回的是类数组对象,支持索引访问和 length 属性
  • 列表内容反映实时连接状态
  • 可以用于遍历所有连接的服务器

GetBridges()

功能描述: 获取所有当前已连接服务器的桥接对象列表,便于批量操作。

语法:

function GetBridges(): ArrayLike<Bridge>

参数: 无

返回值: ArrayLike<Bridge> - 包含所有活跃桥接对象的类数组对象

使用示例:

const bridges = sessions.GetBridges();
logger.info(`可用的桥接对象数量: ${bridges.length}`);

// 向所有服务器发送消息
for (let i = 0; i < bridges.length; i++) {
const bridge = bridges[i];
bridge.SendMessageToAllPlayer("全服广播消息!");
}

注意事项:

  • 返回的桥接对象都是活跃状态
  • 适用于需要对所有服务器执行相同操作的场景
  • 桥接对象数量与会话数量一致

ServerExists()

功能描述: 通过服务器身份令牌检查指定服务器是否在线,提供快速的服务器状态检查。

语法:

function ServerExists(token: string): boolean

参数:

  • token (string): 服务器的身份令牌

返回值: boolean - 如果服务器在线返回 true,否则返回 false

使用示例:

const serverToken = "your-server-token-here";
if (sessions.ServerExists(serverToken)) {
logger.info("服务器在线,可以进行操作");
const bridge = sessions.GetBridge(serverToken);
// 执行服务器操作...
} else {
logger.info("服务器离线或令牌无效");
}

注意事项:

  • 这是检查服务器状态的最快方法
  • 令牌必须是有效的服务器身份标识
  • 适用于在操作前进行状态验证

例子

1. 服务器状态监控

// 定期检查所有服务器状态
function monitorServers() {
const sessions = sessions.GetSessions();

for (let i = 0; i < sessions.length; i++) {
const session = sessions[i];
if (!sessions.IsAlive(session)) {
logger.info(`服务器 ${session.id} 已离线`);
// 执行清理操作
}
}
}

setInterval(monitorServers, 30000); // 每30秒检查一次

2. 批量服务器操作

// 向所有在线服务器发送维护通知
function sendMaintenanceNotice(message: string) {
const bridges = sessions.GetBridges();

for (let i = 0; i < bridges.length; i++) {
const bridge = bridges[i];
try {
bridge.SendMessageToAllPlayer(`[维护通知] ${message}`);
} catch (error) {
logger.error(`向服务器 ${i} 发送消息失败:`, error);
}
}
}

3. 安全的服务器操作

// 安全地获取和使用桥接对象
function safeServerOperation(token: string, operation: (bridge: Bridge) => void) {
if (sessions.ServerExists(token)) {
try {
const bridge = sessions.GetBridge(token);
operation(bridge);
} catch (error) {
logger.error("服务器操作失败:", error);
}
} else {
console.warn("服务器不在线,操作已跳过");
}
}

// 使用示例
safeServerOperation("server-token", (bridge) => {
bridge.SendMessageToAllPlayer("安全操作执行成功!");
});