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("安全操作执行成功!");
});