WebSocketTransport
Manages the WebSocket connection to the Discord voice gateway: socket lifecycle, binary and JSON
message framing, and heartbeating. Detects zombified connections (unacknowledged heartbeat) and
notifies the owner via the onZombified callback.
Summary
Properties
WebSocketTransport.socketActive :: booleanWebSocketTransport.socketReconnecting :: booleanWebSocketTransport.socketDisconnecting :: booleanWebSocketTransport.isResuming :: booleanWebSocketTransport.socketInstance :: any?WebSocketTransport.socketThread :: thread?WebSocketTransport.heartbeatInterval :: number?WebSocketTransport.heartbeatThread :: thread?WebSocketTransport.heartbeatAcknowledged :: booleanWebSocketTransport.heartbeatClockTime :: number?WebSocketTransport.heartbeatPing :: number?WebSocketTransport.sequenceAcknowledgement :: numberWebSocketTransport.onConnected :: (() -> ())?WebSocketTransport.onDisconnected :: ((code: number?, closedBySelf: boolean?) -> ())?WebSocketTransport.onMessage :: ((payload: any) -> ())?WebSocketTransport.onZombified :: (() -> ())?WebSocketTransport.logger :: logger.LoggerMethods
WebSocketTransport:sendAsync(data: string | buffer)WebSocketTransport:_handleMessage(message: string)WebSocketTransport:heartbeatAsync(requested: boolean?)WebSocketTransport:heartbeatIn(milliseconds: number)WebSocketTransport:_openSocket(url: string)WebSocketTransport:forceClose(code: number?)Properties
Section titled “Properties”socketActive
Section titled “socketActive”socketReconnecting
Section titled “socketReconnecting”socketDisconnecting
Section titled “socketDisconnecting”isResuming
Section titled “isResuming”socketInstance
Section titled “socketInstance”socketThread
Section titled “socketThread”heartbeatInterval
Section titled “heartbeatInterval”heartbeatThread
Section titled “heartbeatThread”heartbeatAcknowledged
Section titled “heartbeatAcknowledged”heartbeatClockTime
Section titled “heartbeatClockTime”heartbeatPing
Section titled “heartbeatPing”sequenceAcknowledgement
Section titled “sequenceAcknowledgement”onConnected
Section titled “onConnected”onDisconnected
Section titled “onDisconnected”onMessage
Section titled “onMessage”onZombified
Section titled “onZombified”logger
Section titled “logger”Methods
Section titled “Methods”sendAsync
Section titled “sendAsync”WebSocketTransport : sendAsync ( data ) -> ()
Sends a raw message over the voice WebSocket.
Parameters
| data: string | buffer |
_handleMessage
Section titled “_handleMessage”WebSocketTransport : _handleMessage ( message ) -> ()
Decodes an incoming voice gateway message and dispatches it to onMessage. Binary frames are
unwrapped from the voice binary framing format; JSON payloads are decoded directly.
Parameters
| message: string |
heartbeatAsync
Section titled “heartbeatAsync”WebSocketTransport : heartbeatAsync ( requested ) -> ()
Sends a voice heartbeat. If the previous heartbeat was never acknowledged the connection is marked
as zombified and onZombified is fired instead.
Parameters
| requested: boolean? |
heartbeatIn
Section titled “heartbeatIn”WebSocketTransport : heartbeatIn ( milliseconds ) -> ()
Schedules the next heartbeat to fire after the given number of milliseconds, cancelling any pending heartbeat.
Parameters
| milliseconds: number |
_openSocket
Section titled “_openSocket”WebSocketTransport : _openSocket ( url ) -> ()
Opens the WebSocket to the given URL, starts the receive loop, and fires onConnected.
Parameters
| url: string |
forceClose
Section titled “forceClose”WebSocketTransport : forceClose ( code ) -> ()
Synchronously closes the voice WebSocket and kills all associated threads. Safe to call from a signal handler or any context where yielding is not permitted.
Parameters
| code: number? |
Functions
Section titled “Functions”WebSocketTransport . new ( loggerInstance ) -> WebSocketTransport
Responsible for constructing this class.
Parameters
| loggerInstance: Logger |
Returns
| WebSocketTransport |