Class SocketManager
Hierarchy
- EventBasedManager<SocketEvents>
- SocketManager (View Summary)
Accessors
connected
-
get connected(): boolean
Returns
trueif currently connected to a websocket server.Returns boolean
url
-
get url(): string
Returns the current connection's URL or an empty string, if not connected.
Returns string
Methods
connect
-
Establish a connection to an Archipelago server before authenticating; useful if there might be tasked that are needed to be performed before authenticating, but after connecting (e.g., DataPackage).
Parameters
- url: string | URL
The url of the server, including the protocol (e.g.,
wss://archipelago.gg:38281).
Returns Promise<RoomInfoPacket>
The RoomInfoPacket received on initial connection.
Throws
SocketError if failed to connect or no websocket API is available.
- url: string | URL
disconnect
-
Disconnect from the current Archipelago server, if still connected.
Returns void
off
-
off<
Event extends
| "disconnected"
| "connected"
| "bounced"
| "connectionRefused"
| "dataPackage"
| "invalidPacket"
| "locationInfo"
| "printJSON"
| "receivedItems"
| "retrieved"
| "roomInfo"
| "roomUpdate"
| "setReply"
| "receivedPacket"
| "sentPackets",
>(
event: Event,
listener: (...args: SocketEvents[Event]) => void,
): thisRemoves an existing event listener.
Type Parameters
- Event extends
| "disconnected"
| "connected"
| "bounced"
| "connectionRefused"
| "dataPackage"
| "invalidPacket"
| "locationInfo"
| "printJSON"
| "receivedItems"
| "retrieved"
| "roomInfo"
| "roomUpdate"
| "setReply"
| "receivedPacket"
| "sentPackets"
Parameters
- event: Event
The event name associated with this listener to remove.
- listener: (...args: SocketEvents[Event]) => void
The callback function to remove.
Returns this
This object.
- Event extends
on
-
on<
Event extends
| "disconnected"
| "connected"
| "bounced"
| "connectionRefused"
| "dataPackage"
| "invalidPacket"
| "locationInfo"
| "printJSON"
| "receivedItems"
| "retrieved"
| "roomInfo"
| "roomUpdate"
| "setReply"
| "receivedPacket"
| "sentPackets",
>(
event: Event,
listener: (...args: SocketEvents[Event]) => void,
): thisAdd an event listener for a specific event.
Type Parameters
- Event extends
| "disconnected"
| "connected"
| "bounced"
| "connectionRefused"
| "dataPackage"
| "invalidPacket"
| "locationInfo"
| "printJSON"
| "receivedItems"
| "retrieved"
| "roomInfo"
| "roomUpdate"
| "setReply"
| "receivedPacket"
| "sentPackets"
Parameters
- event: Event
The event name to listen for.
- listener: (...args: SocketEvents[Event]) => void
The callback function to fire when this event is received.
Returns this
This object.
- Event extends
send
-
Send a list of raw client packets to the server.
Parameters
- ...packets: ClientPacket[]
List of client packets to send.
Returns SocketManager
This SocketManager.
Throws
SocketError if not connected to a server.
- ...packets: ClientPacket[]
wait
-
wait<
Event extends
| "disconnected"
| "connected"
| "bounced"
| "connectionRefused"
| "dataPackage"
| "invalidPacket"
| "locationInfo"
| "printJSON"
| "receivedItems"
| "retrieved"
| "roomInfo"
| "roomUpdate"
| "setReply"
| "receivedPacket"
| "sentPackets",
>(
event: Event,
clearPredicate?: (...args: SocketEvents[Event]) => boolean,
): Promise<SocketEvents[Event]>Returns a promise that waits for a single specified event to be received. Resolves with the list of arguments dispatched with the event.
Type Parameters
- Event extends
| "disconnected"
| "connected"
| "bounced"
| "connectionRefused"
| "dataPackage"
| "invalidPacket"
| "locationInfo"
| "printJSON"
| "receivedItems"
| "retrieved"
| "roomInfo"
| "roomUpdate"
| "setReply"
| "receivedPacket"
| "sentPackets"
Parameters
- event: Event
The event name to listen for.
- clearPredicate: (...args: SocketEvents[Event]) => boolean = ...
An optional predicate to check on incoming events to validate if the correct event has been received. If omitted, will return immediately on next event type received.
Returns Promise<SocketEvents[Event]>
- Event extends
Manages socket-level communication and exposes helper methods/events for interacting with the Archipelago API directly.