Hierarchy

Properties

serverVersion: string = "1.2.0"
clusterName: string

The name of the cluster that this node is apart of.

The global configuration for Hindenburg.

connections: Map<string, Connection>

All client connections connected to this server, mapped by their address:port, see address.

The packet decoder used to decode incoming udp packets.

lastClientId: number

The last client ID that was used.

Used for getNextClientId to get an incrementing client ID.

listenSockets: Map<number, Socket>

A map of ports to UDP sockets that clients can connect to.

loadedPlugins: Map<string, LoadedPlugin<typeof WorkerPlugin>>
logger: Logger

Logger for this server.

matchmaker?: Matchmaker

The Http matchmaker for the server, if enabled, see matchmaker.

nodeId: number

The ID of this node relative to the cluster.

pingInterval: Timeout
pluginLoader: PluginLoader

The server's plugin loader.

rooms: Map<number, Room>

All rooms created on this server, mapped by their game code as an integer.

See createRoom

vorpal: Vorpal

Vorpal instance responsible for handling interactive CLI.

Methods

  • Type Parameters

    • Event extends BasicEvent<Event>

    Parameters

    • event: Event

    Returns Promise<Event>

  • Type Parameters

    • Event extends BasicEvent<Event>

    Parameters

    • event: Event

    Returns Promise<Event>

  • Type Parameters

    • Event extends BasicEvent<Event>

    Parameters

    • event: Event

    Returns Event

  • Generate a 4 or 6 letter room code for a room.

    Returns

    The generated room code as an integer.

    Example

    // Generate a 4 letter code.
    const roomCode = generateRoomCode(4);

    console.log(roomCode); // => 1246449490
    // Generate a 6 letter code.
    const roomCode = generateRoomCode(6);

    console.log(roomCode); // => -2007212745

    Parameters

    • len: 6 | 4

      The length of the room code, 4 or 6.

    Returns number

  • Type Parameters

    • Event extends BasicEvent<Event> = BasicEvent

    Parameters

    • event: string

    Returns Listener<Event>[]

  • Get the next available client ID.

    Example

    console.log(worker.getNextClientId()); // => 1
    console.log(worker.getNextClientId()); // => 2
    console.log(worker.getNextClientId()); // => 3
    console.log(worker.getNextClientId()); // => 4
    console.log(worker.getNextClientId()); // => 5

    Returns number

  • Parameters

    • room: Room
    • numImpostors: number
    • lang: number
    • mapId: number
    • quickChat: string
    • perfectMatches: boolean
    • ignoreSearchTerms: false | Set<ValidSearchTerm>

    Returns number

  • Handle a message being received via the udp socket.

    Parameters

    • listenSocket: Socket
    • buffer: Buffer

      The raw data buffer that was received.

    • rinfo: RemoteInfo

      Information about the remote that sent this data.

    Returns Promise<void>

  • Type Parameters

    • EventName extends "component.spawn" | "component.despawn" | "player.checkcolor" | "player.checkmurder" | "player.checkname" | "player.checkprotect" | "player.completetask" | "player.die" | "player.usemovingplatform" | "player.murder" | "player.protect" | "player.removeprotection" | "player.reportbody" | "player.revertshapeshift" | "player.chat" | "player.quickchat" | "player.setcolor" | "player.sethat" | "player.setname" | "player.setnameplate" | "player.setpet" | "player.setrole" | "player.setskin" | "player.setstartcounter" | "player.setvisor" | "player.shapeshift" | "player.startmeeting" | "player.syncsettings" | "player.entervent" | "player.exitvent" | "player.climbladder" | "player.move" | "player.snapto" | "player.ready" | "player.join" | "player.leave" | "player.sethost" | "player.scenechange" | "player.spawn" | "gamedata.addplayer" | "gamedata.removeplayer" | "gamedata.settasks" | "meeting.castvote" | "meeting.clearvote" | "meeting.votingcomplete" | "meeting.close" | "doors.open" | "doors.close" | "system.sabotage" | "system.repair" | "decon.doors.close" | "decon.doors.open" | "decon.enter" | "decon.exit" | "hqhud.consoles.reset" | "hqhud.consoles.open" | "hqhud.consoles.close" | "hqhud.consoles.complete" | "heli.consoles.open" | "heli.consoles.reset" | "heli.consoles.close" | "heli.consoles.complete" | "o2.consoles.clear" | "o2.consoles.complete" | "medscan.joinqueue" | "medscan.leavequeue" | "movingplatform.updateplayer" | "reactor.consoles.add" | "reactor.consoles.remove" | "reactor.consoles.reset" | "security.cameras.join" | "security.cameras.leave" | "electrical.switchflip" | "room.assignroles" | "room.endgameintent" | "room.fixedupdate" | "room.gameend" | "room.gamestart" | "room.setprivacy" | "client.broadcast" | "client.leave" | "room.beforedestroy" | "room.create" | "room.destroy" | "room.selecthost" | "client.ban" | "client.connect" | "client.disconnect" | "room.beforecreate" | "worker.beforejoin" | "worker.getgamelist" | "worker.loadplugin"

    Parameters

    • event: EventName
    • listener: Listener<WorkerEvents[EventName]>

    Returns void

  • Type Parameters

    • K extends BasicEvent<K>

    Parameters

    • event: string
    • listener: Listener<K>

    Returns void

  • Type Parameters

    • EventName extends "component.spawn" | "component.despawn" | "player.checkcolor" | "player.checkmurder" | "player.checkname" | "player.checkprotect" | "player.completetask" | "player.die" | "player.usemovingplatform" | "player.murder" | "player.protect" | "player.removeprotection" | "player.reportbody" | "player.revertshapeshift" | "player.chat" | "player.quickchat" | "player.setcolor" | "player.sethat" | "player.setname" | "player.setnameplate" | "player.setpet" | "player.setrole" | "player.setskin" | "player.setstartcounter" | "player.setvisor" | "player.shapeshift" | "player.startmeeting" | "player.syncsettings" | "player.entervent" | "player.exitvent" | "player.climbladder" | "player.move" | "player.snapto" | "player.ready" | "player.join" | "player.leave" | "player.sethost" | "player.scenechange" | "player.spawn" | "gamedata.addplayer" | "gamedata.removeplayer" | "gamedata.settasks" | "meeting.castvote" | "meeting.clearvote" | "meeting.votingcomplete" | "meeting.close" | "doors.open" | "doors.close" | "system.sabotage" | "system.repair" | "decon.doors.close" | "decon.doors.open" | "decon.enter" | "decon.exit" | "hqhud.consoles.reset" | "hqhud.consoles.open" | "hqhud.consoles.close" | "hqhud.consoles.complete" | "heli.consoles.open" | "heli.consoles.reset" | "heli.consoles.close" | "heli.consoles.complete" | "o2.consoles.clear" | "o2.consoles.complete" | "medscan.joinqueue" | "medscan.leavequeue" | "movingplatform.updateplayer" | "reactor.consoles.add" | "reactor.consoles.remove" | "reactor.consoles.reset" | "security.cameras.join" | "security.cameras.leave" | "electrical.switchflip" | "room.assignroles" | "room.endgameintent" | "room.fixedupdate" | "room.gameend" | "room.gamestart" | "room.setprivacy" | "client.broadcast" | "client.leave" | "room.beforedestroy" | "room.create" | "room.destroy" | "room.selecthost" | "client.ban" | "client.connect" | "client.disconnect" | "room.beforecreate" | "worker.beforejoin" | "worker.getgamelist" | "worker.loadplugin"

    Parameters

    • event: EventName
    • listener: Listener<WorkerEvents[EventName]>

    Returns (() => void)

      • (): void
      • Returns void

  • Type Parameters

    • K extends BasicEvent<K>

    Parameters

    • event: string
    • listener: Listener<K>

    Returns (() => void)

      • (): void
      • Returns void

  • Type Parameters

    • EventName extends "component.spawn" | "component.despawn" | "player.checkcolor" | "player.checkmurder" | "player.checkname" | "player.checkprotect" | "player.completetask" | "player.die" | "player.usemovingplatform" | "player.murder" | "player.protect" | "player.removeprotection" | "player.reportbody" | "player.revertshapeshift" | "player.chat" | "player.quickchat" | "player.setcolor" | "player.sethat" | "player.setname" | "player.setnameplate" | "player.setpet" | "player.setrole" | "player.setskin" | "player.setstartcounter" | "player.setvisor" | "player.shapeshift" | "player.startmeeting" | "player.syncsettings" | "player.entervent" | "player.exitvent" | "player.climbladder" | "player.move" | "player.snapto" | "player.ready" | "player.join" | "player.leave" | "player.sethost" | "player.scenechange" | "player.spawn" | "gamedata.addplayer" | "gamedata.removeplayer" | "gamedata.settasks" | "meeting.castvote" | "meeting.clearvote" | "meeting.votingcomplete" | "meeting.close" | "doors.open" | "doors.close" | "system.sabotage" | "system.repair" | "decon.doors.close" | "decon.doors.open" | "decon.enter" | "decon.exit" | "hqhud.consoles.reset" | "hqhud.consoles.open" | "hqhud.consoles.close" | "hqhud.consoles.complete" | "heli.consoles.open" | "heli.consoles.reset" | "heli.consoles.close" | "heli.consoles.complete" | "o2.consoles.clear" | "o2.consoles.complete" | "medscan.joinqueue" | "medscan.leavequeue" | "movingplatform.updateplayer" | "reactor.consoles.add" | "reactor.consoles.remove" | "reactor.consoles.reset" | "security.cameras.join" | "security.cameras.leave" | "electrical.switchflip" | "room.assignroles" | "room.endgameintent" | "room.fixedupdate" | "room.gameend" | "room.gamestart" | "room.setprivacy" | "client.broadcast" | "client.leave" | "room.beforedestroy" | "room.create" | "room.destroy" | "room.selecthost" | "client.ban" | "client.connect" | "client.disconnect" | "room.beforecreate" | "worker.beforejoin" | "worker.getgamelist" | "worker.loadplugin"

    Parameters

    • event: EventName
    • listener: Listener<WorkerEvents[EventName]>

    Returns (() => void)

      • (): void
      • Returns void

  • Type Parameters

    • K extends BasicEvent<K>

    Parameters

    • event: string
    • listener: Listener<K>

    Returns (() => void)

      • (): void
      • Returns void

  • Returns void

  • Remove a connection from this server.

    Note that this does not notify the client of the connection that they have been disconnected, see disconnect.

    Parameters

    • connection: Connection

      The connection to remove.

    Returns void

  • Parameters

    • event: string

    Returns void

  • Serialize and reliable or unreliably send a packet to a client.

    For reliable packets, packets sent will be reliably recorded and marked for re-sending if the client does not send an acknowledgement for the packet.

    Example

    worker.sendPacket(connection,
    new ReliablePacket(
    connection.getNextNonce(),
    [
    new HostGameMessage("ALBERT")
    ]
    )
    );

    Parameters

    Returns Promise<void>

  • Parameters

    • listenSocket: Socket
    • remote: RemoteInfo
    • buffer: Buffer

    Returns Promise<unknown>

  • Type Parameters

    • EventName extends "component.spawn" | "component.despawn" | "player.checkcolor" | "player.checkmurder" | "player.checkname" | "player.checkprotect" | "player.completetask" | "player.die" | "player.usemovingplatform" | "player.murder" | "player.protect" | "player.removeprotection" | "player.reportbody" | "player.revertshapeshift" | "player.chat" | "player.quickchat" | "player.setcolor" | "player.sethat" | "player.setname" | "player.setnameplate" | "player.setpet" | "player.setrole" | "player.setskin" | "player.setstartcounter" | "player.setvisor" | "player.shapeshift" | "player.startmeeting" | "player.syncsettings" | "player.entervent" | "player.exitvent" | "player.climbladder" | "player.move" | "player.snapto" | "player.ready" | "player.join" | "player.leave" | "player.sethost" | "player.scenechange" | "player.spawn" | "gamedata.addplayer" | "gamedata.removeplayer" | "gamedata.settasks" | "meeting.castvote" | "meeting.clearvote" | "meeting.votingcomplete" | "meeting.close" | "doors.open" | "doors.close" | "system.sabotage" | "system.repair" | "decon.doors.close" | "decon.doors.open" | "decon.enter" | "decon.exit" | "hqhud.consoles.reset" | "hqhud.consoles.open" | "hqhud.consoles.close" | "hqhud.consoles.complete" | "heli.consoles.open" | "heli.consoles.reset" | "heli.consoles.close" | "heli.consoles.complete" | "o2.consoles.clear" | "o2.consoles.complete" | "medscan.joinqueue" | "medscan.leavequeue" | "movingplatform.updateplayer" | "reactor.consoles.add" | "reactor.consoles.remove" | "reactor.consoles.reset" | "security.cameras.join" | "security.cameras.leave" | "electrical.switchflip" | "room.assignroles" | "room.endgameintent" | "room.fixedupdate" | "room.gameend" | "room.gamestart" | "room.setprivacy" | "client.broadcast" | "client.leave" | "room.beforedestroy" | "room.create" | "room.destroy" | "room.selecthost" | "client.ban" | "client.connect" | "client.disconnect" | "room.beforecreate" | "worker.beforejoin" | "worker.getgamelist" | "worker.loadplugin"

    Parameters

    • event: EventName

    Returns Promise<WorkerEvents[EventName]>

  • Parameters

    • event: string

    Returns Promise<BasicEvent>

  • Type Parameters

    • EventName extends "component.spawn" | "component.despawn" | "player.checkcolor" | "player.checkmurder" | "player.checkname" | "player.checkprotect" | "player.completetask" | "player.die" | "player.usemovingplatform" | "player.murder" | "player.protect" | "player.removeprotection" | "player.reportbody" | "player.revertshapeshift" | "player.chat" | "player.quickchat" | "player.setcolor" | "player.sethat" | "player.setname" | "player.setnameplate" | "player.setpet" | "player.setrole" | "player.setskin" | "player.setstartcounter" | "player.setvisor" | "player.shapeshift" | "player.startmeeting" | "player.syncsettings" | "player.entervent" | "player.exitvent" | "player.climbladder" | "player.move" | "player.snapto" | "player.ready" | "player.join" | "player.leave" | "player.sethost" | "player.scenechange" | "player.spawn" | "gamedata.addplayer" | "gamedata.removeplayer" | "gamedata.settasks" | "meeting.castvote" | "meeting.clearvote" | "meeting.votingcomplete" | "meeting.close" | "doors.open" | "doors.close" | "system.sabotage" | "system.repair" | "decon.doors.close" | "decon.doors.open" | "decon.enter" | "decon.exit" | "hqhud.consoles.reset" | "hqhud.consoles.open" | "hqhud.consoles.close" | "hqhud.consoles.complete" | "heli.consoles.open" | "heli.consoles.reset" | "heli.consoles.close" | "heli.consoles.complete" | "o2.consoles.clear" | "o2.consoles.complete" | "medscan.joinqueue" | "medscan.leavequeue" | "movingplatform.updateplayer" | "reactor.consoles.add" | "reactor.consoles.remove" | "reactor.consoles.reset" | "security.cameras.join" | "security.cameras.leave" | "electrical.switchflip" | "room.assignroles" | "room.endgameintent" | "room.fixedupdate" | "room.gameend" | "room.gamestart" | "room.setprivacy" | "client.broadcast" | "client.leave" | "room.beforedestroy" | "room.create" | "room.destroy" | "room.selecthost" | "client.ban" | "client.connect" | "client.disconnect" | "room.beforecreate" | "worker.beforejoin" | "worker.getgamelist" | "worker.loadplugin"

    Parameters

    • event: EventName
    • filter: ((ev: WorkerEvents[EventName]) => boolean | Promise<boolean>)
        • (ev: WorkerEvents[EventName]): boolean | Promise<boolean>
        • Parameters

          Returns boolean | Promise<boolean>

    Returns Promise<WorkerEvents[EventName]>

  • Type Parameters

    • K extends BasicEvent<K>

    Parameters

    • event: string
    • filter: ((ev: K) => boolean | Promise<boolean>)
        • (ev: K): boolean | Promise<boolean>
        • Parameters

          • ev: K

          Returns boolean | Promise<boolean>

    Returns Promise<BasicEvent>

Constructors

  • Parameters

    • clusterName: string

      The name of the cluster that this node is apart of.

    • nodeId: number

      The ID of this node relative to the cluster.

    • config: HindenburgConfig

      The global configuration for Hindenburg.

    • pluginDirectories: string[]

    Returns Worker

Generated using TypeDoc