Skip to content

服务端 API

Tiaoom 类是服务端逻辑的主要入口点。此外,服务端还扩展了 RoomPlayer 类以提供游戏逻辑支持。

Tiaoom

构造函数

typescript
constructor(options: ITiaoomOptions)
参数类型描述
optionsITiaoomOptions初始化选项。

方法

run()

启动游戏引擎并设置事件监听器。

返回: this

on(event: TiaoomEvents, listener: Function): this

监听服务器事件。

参数类型描述
eventkeyof TiaoomEvents事件名称。
listenerFunction事件回调函数。

返回: this

emit(event: TiaoomEvents, ...args: any[]): boolean

触发服务器事件。

参数类型描述
eventkeyof TiaoomEvents事件名称。
argsany[]事件参数。

返回: boolean

searchPlayer(player: string | PlayerOptions | IRoomPlayerOptions): Player | undefined

搜索玩家。

参数类型描述
playerstring | PlayerOptions | IRoomPlayerOptions玩家 ID 或玩家选项对象。

返回: Player | undefined

searchRoom(room: string | Partial<IRoomOptions>): Room | undefined

搜索房间。

参数类型描述
roomstring | Partial<IRoomOptions>房间 ID 或房间选项对象。

返回: Room | undefined

createRoom(sender: IPlayer, options: IRoomOptions): Room

创建一个新房间。

参数类型描述
senderIPlayer创建房间的玩家。
optionsIRoomOptions房间选项。

返回: Room

startRoom(sender: IPlayer, room: IRoom): boolean

开始房间游戏。

参数类型描述
senderIPlayer发起操作的玩家。
roomIRoom要开始的房间。

返回: boolean

closeRoom(sender: IPlayer, room: IRoom): Room

关闭房间。

参数类型描述
senderIPlayer发起操作的玩家(必须是房主)。
roomIRoom要关闭的房间。

返回: Room

kickPlayer(sender: IPlayer, data: { roomId: string, playerId: string }): IRoomPlayer | undefined

将玩家踢出房间。

参数类型描述
senderIPlayer发起操作的玩家(必须是房主)。
data{ roomId: string, playerId: string }包含房间 ID 和目标玩家 ID 的对象。

返回: IRoomPlayer | undefined

transferOwner(sender: IPlayer, data: { roomId: string, playerId: string }): Room | undefined

转让房主权限。

参数类型描述
senderIPlayer发起操作的玩家(必须是房主)。
data{ roomId: string, playerId: string }包含房间 ID 和目标玩家 ID 的对象。

返回: Room | undefined

loginPlayer(player: PlayerOptions, cb?: (data: { player: Player }) => void): Player

玩家登录。

参数类型描述
playerPlayerOptions玩家选项。
cb(data: { player: Player }) => void (可选)回调函数。

返回: Player

joinPlayer(sender: IPlayer, player: IRoomPlayerOptions, isCreator?: boolean): IRoomPlayer | undefined

玩家加入房间。

参数类型描述
senderIPlayer发起操作的玩家。
playerIRoomPlayerOptions加入房间的选项。
isCreatorboolean (可选)是否作为房主加入(默认为 false)。

返回: IRoomPlayer | undefined

leavePlayer(sender: IPlayer, player: IRoomPlayerOptions): IRoomPlayer | undefined

玩家离开房间。

参数类型描述
senderIPlayer发起操作的玩家。
playerIRoomPlayerOptions离开房间的选项。

返回: IRoomPlayer | undefined

readyPlayer(sender: IPlayer, player: IRoomPlayer): this

玩家准备。

参数类型描述
senderIPlayer发起操作的玩家。
playerIRoomPlayer玩家对象。

返回: this

unReadyPlayer(sender: IPlayer, player: IRoomPlayer): this

玩家取消准备。

参数类型描述
senderIPlayer发起操作的玩家。
playerIRoomPlayer玩家对象。

返回: this

removePlayer(sender: IPlayer): Player | undefined

移除玩家(完全登出)。

参数类型描述
senderIPlayer要移除的玩家。

返回: Player | undefined

事件

请参考 事件文档

Room

服务端房间类,继承自 EventEmitter 并实现了 IRoom 接口。

方法

on(event: RoomEvents, listener: Function): this

监听房间事件。

参数类型描述
eventkeyof RoomEvents事件名称。
listenerFunction事件回调函数。

返回: this

emit(event: RoomEvents, ...args: any[]): boolean

触发房间事件。

参数类型描述
eventkeyof RoomEvents事件名称。
argsany[]事件参数。

返回: boolean

setCreator(player: Player): this

设置房主。

参数类型描述
playerPlayer目标玩家。

返回: this

addPlayer(player: Player, isCreator?: boolean): RoomPlayer

添加玩家到房间。

参数类型描述
playerPlayer要添加的玩家。
isCreatorboolean (可选)是否设为房主。

返回: RoomPlayer

kickPlayer(player: IPlayer | string): RoomPlayer

从房间踢出玩家。

参数类型描述
playerIPlayer | string玩家对象或玩家 ID。

返回: RoomPlayer

searchPlayer(player: IPlayer | string): RoomPlayer | undefined

在房间内搜索玩家。

参数类型描述
playerIPlayer | string玩家对象或玩家 ID。

返回: RoomPlayer | undefined

start(): boolean

开始游戏。

返回: boolean (是否有监听器被触发)

end(): boolean

结束游戏。

返回: boolean (是否有监听器被触发)

setSender(sender: (type: string, ...message: any) => void): this

设置房间的消息发送器。⚠️ 内部调用,一般不要使用。

参数类型描述
senderFunction发送函数。

返回: this

属性 (Getters)

  • validPlayers: RoomPlayer[] - 有效玩家列表(非旁观者)。
  • watchers: RoomPlayer[] - 旁观者列表。
  • owner: RoomPlayer | undefined - 房主玩家。
  • isReady: boolean - 房间是否已准备好(人数满足且所有玩家已准备)。
  • status: RoomStatus - 房间状态。
  • isPlaying: boolean - 是否正在游戏中。
  • isFull: boolean - 房间是否已满。

Player

服务端玩家类,继承自 EventEmitter 并实现了 IPlayer 接口。

方法

on(event: PlayerEvents, listener: Function): this

监听玩家事件。

参数类型描述
eventkeyof PlayerEvents事件名称。
listenerFunction事件回调函数。

返回: this

emit(event: PlayerEvents, ...args: any[]): boolean

触发玩家事件。

参数类型描述
eventkeyof PlayerEvents事件名称。
argsany[]事件参数。

返回: boolean

setSender(sender: (type: string, ...message: any) => void): this

设置玩家的消息发送器。⚠️ 内部调用,一般不要使用。

参数类型描述
senderFunction发送函数。

返回: this