hoshii / Exports / WebSocket

WebSocket

Represents a websocket connection to the gateway

Hierarchy

Table of contents

Constructors

Properties

Accessors

Methods

Constructors

constructor

• new WebSocket(client)

Create a new Websocket connection

Parameters

NameTypeDescription
clientClientThe client

Overrides

TypedEmitter<WebsocketEvents&gt;.constructor

Defined in

lib/gateway/WebSocket.ts:154open in new window

Properties

_connectTimeout

• Private _connectTimeout: Timeout

The timeout for the connection

Defined in

lib/gateway/WebSocket.ts:53open in new window


_heartbeatInterval

• Private _heartbeatInterval: Timeout

The interval for the heartbeat

Defined in

lib/gateway/WebSocket.ts:58open in new window


_sharedZLib

• Private _sharedZLib: any

The shared zlib instance (currently not supported)

Defined in

lib/gateway/WebSocket.ts:63open in new window


alive

• Optional alive: boolean

Whether the websocket is alive

Defined in

lib/gateway/WebSocket.ts:68open in new window


client

• client: Client

The client

Defined in

lib/gateway/WebSocket.ts:73open in new window


connected

• connected: boolean

Whether the websocket is connected

Defined in

lib/gateway/WebSocket.ts:78open in new window


connectionTimeout

• connectionTimeout: number

The timeout for the connection

Defined in

lib/gateway/WebSocket.ts:83open in new window


currReconnectAttempt

• currReconnectAttempt: number

The current reconnect attempt

Defined in

lib/gateway/WebSocket.ts:88open in new window


firstWSMessage

• firstWSMessage: boolean

Whether the websocket has received the first message

Defined in

lib/gateway/WebSocket.ts:93open in new window


gatewayURL

• gatewayURL: string

The URl of the gateway

Defined in

lib/gateway/WebSocket.ts:98open in new window


gatewayVersion

• gatewayVersion: string | number

The version of the gateway

Defined in

lib/gateway/WebSocket.ts:103open in new window


heartbeatRequested

• heartbeatRequested: boolean

Whether the websocket has requested a heartbeat

Defined in

lib/gateway/WebSocket.ts:108open in new window


lastHeartbeatAck

• lastHeartbeatAck: boolean

Whether the websocket has acknowledged the last heartbeat

Defined in

lib/gateway/WebSocket.ts:113open in new window


lastHeartbeatReceived

• lastHeartbeatReceived: number

Last time a heartbeat was received

Defined in

lib/gateway/WebSocket.ts:118open in new window


lastHeartbeatSent

• lastHeartbeatSent: number

Last time a heartbeat was sent

Defined in

lib/gateway/WebSocket.ts:123open in new window


lastMessageID

• Optional lastMessageID: string

The last message ID

Defined in

lib/gateway/WebSocket.ts:128open in new window


latency

• latency: number

The latency of the websocket

Defined in

lib/gateway/WebSocket.ts:133open in new window


reconnectInterval

• reconnectInterval: number

The interval for reconnecting

Defined in

lib/gateway/WebSocket.ts:138open in new window


replayMissedEvents

• Optional replayMissedEvents: boolean

Whether the websocket should replay missed events

Defined in

lib/gateway/WebSocket.ts:143open in new window


ws

• ws: WebSocket

The websocket

Defined in

lib/gateway/WebSocket.ts:148open in new window


captureRejectionSymbol

▪ Static Readonly captureRejectionSymbol: typeof captureRejectionSymbol

Inherited from

TypedEmitter.captureRejectionSymbol

Defined in

node_modules/@types/node/events.d.ts:328


captureRejections

▪ Static captureRejections: boolean

Sets or gets the default captureRejection value for all emitters.

Inherited from

TypedEmitter.captureRejections

Defined in

node_modules/@types/node/events.d.ts:333


defaultMaxListeners

▪ Static defaultMaxListeners: number

Inherited from

TypedEmitter.defaultMaxListeners

Defined in

node_modules/@types/node/events.d.ts:334


errorMonitor

▪ Static Readonly errorMonitor: typeof errorMonitor

This symbol shall be used to install a listener for only monitoring 'error' events. Listeners installed using this symbol are called before the regular 'error' listeners are called.

Installing a listener using this symbol does not change the behavior once an 'error' event is emitted, therefore the process will still crash if no regular 'error' listener is installed.

Inherited from

TypedEmitter.errorMonitor

Defined in

node_modules/@types/node/events.d.ts:327

Accessors

replayEventsCondition

• get replayEventsCondition(): boolean

Returns

boolean

Defined in

lib/gateway/WebSocket.ts:192open in new window

Methods

addListener

▸ addListener<K>(event, listener): WebSocket

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventK
listener(...args: WebsocketEvents[K]) => void

Returns

WebSocket

Inherited from

TypedEmitter.addListener

Defined in

lib/utils/TypedEmitter.ts:7open in new window


connect

▸ connect(): void | Error

Connect to the websocket

Returns

void | Error

Defined in

lib/gateway/WebSocket.ts:202open in new window


disconnect

▸ disconnect(reconnect?, error?): void

Disconnect from the websocket

Parameters

NameTypeDescription
reconnectbooleanWhether the websocket should reconnect
error?ErrorThe error that caused the disconnect

Returns

void

Defined in

lib/gateway/WebSocket.ts:222open in new window


emit

▸ emit<K>(eventName, ...args): boolean

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventNameK
...argsWebsocketEvents[K]

Returns

boolean

Inherited from

TypedEmitter.emit

Defined in

lib/utils/TypedEmitter.ts:11open in new window

▸ emit<K>(eventName, ...args): boolean

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventNameK
...argsWebsocketEvents[K]

Returns

boolean

Inherited from

TypedEmitter.emit

Defined in

lib/utils/TypedEmitter.ts:45open in new window


eventNames

▸ eventNames(): (string | symbol)[]

Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

const EventEmitter = require('events');
const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});

const sym = Symbol('symbol');
myEE.on(sym, () => {});

console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]

Since

v6.0.0

Returns

(string | symbol)[]

Inherited from

TypedEmitter.eventNames

Defined in

node_modules/@types/node/events.d.ts:669


getMaxListeners

▸ getMaxListeners(): number

Returns the current max listener value for the EventEmitter which is either set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

Since

v1.0.0

Returns

number

Inherited from

TypedEmitter.getMaxListeners

Defined in

node_modules/@types/node/events.d.ts:526


hardReset

▸ hardReset(): void

Returns

void

Defined in

lib/gateway/WebSocket.ts:307open in new window


heartbeat

▸ Private heartbeat(): boolean | void

Returns

boolean | void

Defined in

lib/gateway/WebSocket.ts:330open in new window


initialise

▸ Private initialise(): void

Returns

void

Defined in

lib/gateway/WebSocket.ts:351open in new window


listenerCount

▸ listenerCount(eventName): number

Parameters

NameType
eventNamekeyof WebsocketEvents

Returns

number

Inherited from

TypedEmitter.listenerCount

Defined in

lib/utils/TypedEmitter.ts:12open in new window


listeners

▸ listeners(eventName): Function[]

Parameters

NameType
eventNamekeyof WebsocketEvents

Returns

Function[]

Inherited from

TypedEmitter.listeners

Defined in

lib/utils/TypedEmitter.ts:13open in new window


off

▸ off<K>(event, listener): WebSocket

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventK
listener(...args: WebsocketEvents[K]) => void

Returns

WebSocket

Inherited from

TypedEmitter.off

Defined in

lib/utils/TypedEmitter.ts:14open in new window


on

▸ on<K>(event, listener): WebSocket

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventK
listener(...args: WebsocketEvents[K]) => void

Returns

WebSocket

Inherited from

TypedEmitter.on

Defined in

lib/utils/TypedEmitter.ts:18open in new window


onPacket

▸ Private onPacket(packet): void

Parameters

NameType
packetAnyPacket

Returns

void

Defined in

lib/gateway/WebSocket.ts:404open in new window


onSocketClose

▸ Private onSocketClose(code, r): void

Parameters

NameType
codenumber
rBuffer

Returns

void

Defined in

lib/gateway/WebSocket.ts:456open in new window


onSocketError

▸ Private onSocketError(error): void

Parameters

NameType
errorError

Returns

void

Defined in

lib/gateway/WebSocket.ts:486open in new window


onSocketMessage

▸ Private onSocketMessage(data): void

Parameters

NameType
dataData

Returns

void

Defined in

lib/gateway/WebSocket.ts:494open in new window


onSocketOpen

▸ Private onSocketOpen(): void

Returns

void

Defined in

lib/gateway/WebSocket.ts:548open in new window


onSocketPing

▸ Private onSocketPing(): void

Returns

void

Defined in

lib/gateway/WebSocket.ts:553open in new window


onSocketPong

▸ Private onSocketPong(): void

Returns

void

Defined in

lib/gateway/WebSocket.ts:558open in new window


once

▸ once<K>(event, listener): WebSocket

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventK
listener(...args: WebsocketEvents[K]) => void

Returns

WebSocket

Inherited from

TypedEmitter.once

Defined in

lib/utils/TypedEmitter.ts:22open in new window


prependListener

▸ prependListener<K>(event, listener): WebSocket

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventK
listener(...args: WebsocketEvents[K]) => void

Returns

WebSocket

Inherited from

TypedEmitter.prependListener

Defined in

lib/utils/TypedEmitter.ts:26open in new window


prependOnceListener

▸ prependOnceListener<K>(event, listener): WebSocket

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventK
listener(...args: WebsocketEvents[K]) => void

Returns

WebSocket

Inherited from

TypedEmitter.prependOnceListener

Defined in

lib/utils/TypedEmitter.ts:30open in new window


rawListeners

▸ rawListeners(eventName): Function[]

Parameters

NameType
eventNamekeyof WebsocketEvents

Returns

Function[]

Inherited from

TypedEmitter.rawListeners

Defined in

lib/utils/TypedEmitter.ts:34open in new window


removeAllListeners

▸ removeAllListeners(event?): WebSocket

Parameters

NameType
event?keyof WebsocketEvents

Returns

WebSocket

Inherited from

TypedEmitter.removeAllListeners

Defined in

lib/utils/TypedEmitter.ts:35open in new window


removeListener

▸ removeListener<K>(event, listener): WebSocket

Type parameters

NameType
Kextends keyof WebsocketEvents

Parameters

NameType
eventK
listener(...args: WebsocketEvents[K]) => void

Returns

WebSocket

Inherited from

TypedEmitter.removeListener

Defined in

lib/utils/TypedEmitter.ts:36open in new window


reset

▸ reset(): void

Returns

void

Defined in

lib/gateway/WebSocket.ts:564open in new window


setMaxListeners

▸ setMaxListeners(n): WebSocket

By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

Returns a reference to the EventEmitter, so that calls can be chained.

Since

v0.3.5

Parameters

NameType
nnumber

Returns

WebSocket

Inherited from

TypedEmitter.setMaxListeners

Defined in

node_modules/@types/node/events.d.ts:520


getEventListeners

▸ Static getEventListeners(emitter, name): Function[]

Returns a copy of the array of listeners for the event named eventName.

For EventEmitters this behaves exactly the same as calling .listeners on the emitter.

For EventTargets this is the only way to get the event listeners for the event target. This is useful for debugging and diagnostic purposes.

const { getEventListeners, EventEmitter } = require('events');

{
  const ee = new EventEmitter();
  const listener = () => console.log('Events are fun');
  ee.on('foo', listener);
  getEventListeners(ee, 'foo'); // [listener]
}
{
  const et = new EventTarget();
  const listener = () => console.log('Events are fun');
  et.addEventListener('foo', listener);
  getEventListeners(et, 'foo'); // [listener]
}

Since

v15.2.0, v14.17.0

Parameters

NameType
emitterEventEmitter | _DOMEventTarget
namestring | symbol

Returns

Function[]

Inherited from

TypedEmitter.getEventListeners

Defined in

node_modules/@types/node/events.d.ts:299


listenerCount

▸ Static listenerCount(emitter, eventName): number

A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

const { EventEmitter, listenerCount } = require('events');
const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2

Since

v0.9.12

Deprecated

Since v3.2.0 - Use listenerCount instead.

Parameters

NameTypeDescription
emitterEventEmitterThe emitter to query
eventNamestring | symbolThe event name

Returns

number

Inherited from

TypedEmitter.listenerCount

Defined in

node_modules/@types/node/events.d.ts:271


on

▸ Static on(emitter, eventName, options?): AsyncIterableIterator<any>

const { on, EventEmitter } = require('events');

(async () => {
  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }
  // Unreachable here
})();

Returns an AsyncIterator that iterates eventName events. It will throw if the EventEmitter emits 'error'. It removes all listeners when exiting the loop. The value returned by each iteration is an array composed of the emitted event arguments.

An AbortSignal can be used to cancel waiting on events:

const { on, EventEmitter } = require('events');
const ac = new AbortController();

(async () => {
  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }
  // Unreachable here
})();

process.nextTick(() => ac.abort());

Since

v13.6.0, v12.16.0

Parameters

NameTypeDescription
emitterEventEmitter-
eventNamestringThe name of the event being listened for
options?StaticEventEmitterOptions-

Returns

AsyncIterableIterator<any>

that iterates eventName events emitted by the emitter

Inherited from

TypedEmitter.on

Defined in

node_modules/@types/node/events.d.ts:254


once

▸ Static once(emitter, eventName, options?): Promise<any[]>

Creates a Promise that is fulfilled when the EventEmitter emits the given event or that is rejected if the EventEmitter emits 'error' while waiting. The Promise will resolve with an array of all the arguments emitted to the given event.

This method is intentionally generic and works with the web platform EventTargetopen in new window interface, which has no special'error' event semantics and does not listen to the 'error' event.

const { once, EventEmitter } = require('events');

async function run() {
  const ee = new EventEmitter();

  process.nextTick(() => {
    ee.emit('myevent', 42);
  });

  const [value] = await once(ee, 'myevent');
  console.log(value);

  const err = new Error('kaboom');
  process.nextTick(() => {
    ee.emit('error', err);
  });

  try {
    await once(ee, 'myevent');
  } catch (err) {
    console.log('error happened', err);
  }
}

run();

The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the 'error' event itself, then it is treated as any other kind of event without special handling:

const { EventEmitter, once } = require('events');

const ee = new EventEmitter();

once(ee, 'error')
  .then(([err]) => console.log('ok', err.message))
  .catch((err) => console.log('error', err.message));

ee.emit('error', new Error('boom'));

// Prints: ok boom

An AbortSignal can be used to cancel waiting for the event:

const { EventEmitter, once } = require('events');

const ee = new EventEmitter();
const ac = new AbortController();

async function foo(emitter, event, signal) {
  try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
  } catch (error) {
    if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
    } else {
      console.error('There was an error', error.message);
    }
  }
}

foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled!

Since

v11.13.0, v10.16.0

Parameters

NameType
emitter_NodeEventTarget
eventNamestring | symbol
options?StaticEventEmitterOptions

Returns

Promise<any[]>

Inherited from

TypedEmitter.once

Defined in

node_modules/@types/node/events.d.ts:194

▸ Static once(emitter, eventName, options?): Promise<any[]>

Parameters

NameType
emitter_DOMEventTarget
eventNamestring
options?StaticEventEmitterOptions

Returns

Promise<any[]>

Inherited from

TypedEmitter.once

Defined in

node_modules/@types/node/events.d.ts:195


setMaxListeners

▸ Static setMaxListeners(n?, ...eventTargets): void

const {
  setMaxListeners,
  EventEmitter
} = require('events');

const target = new EventTarget();
const emitter = new EventEmitter();

setMaxListeners(5, target, emitter);

Since

v15.4.0

Parameters

NameTypeDescription
n?numberA non-negative number. The maximum number of listeners per EventTarget event.
...eventTargets(EventEmitter | _DOMEventTarget)[]-

Returns

void

Inherited from

TypedEmitter.setMaxListeners

Defined in

node_modules/@types/node/events.d.ts:317

Last Updated:
Contributors: Reinhardt