Skip to content

UdpTransport

Manages the UDP socket for a voice connection: IP discovery, keepalive, RTP receive, and audio send.

decryptPacket and onAudioPacket must be set by the owner before starting the receive loop.

UdpTransport.udpSocket  :: UdpSocket?
UdpTransport.udpReceiveThread  :: thread?
UdpTransport.keepaliveThread  :: thread?
UdpTransport.keepaliveSequence  :: number
UdpTransport.keepaliveSentAt  :: {
{ [number]: number } }
UdpTransport.udpPing  :: number?
UdpTransport.ssrc  :: number?
UdpTransport.udpIp  :: string?
UdpTransport.udpPort  :: number?
UdpTransport.modes  :: { string }?
UdpTransport.streams  :: {
{ { [string]: any } }
UdpTransport.experiments  :: { string }?
UdpTransport.decryptPacket  :: ((packet: buffer) -> buffer?)?
UdpTransport.onAudioPacket  :: ((ssrc: number, sequence: number, frame: buffer) -> ())?
UdpTransport.logger  :: Logger
UdpTransport : cleanup ( )  -> ()

Closes the UDP socket and stops both the receive loop and keepalive loop.

UdpTransport : discoverIpAsync ( )  -> ()

Performs UDP IP discovery via the voice server and returns the bot’s external IP and port.

UdpTransport : _sendKeepalive ( )  -> ()

Sends a single UDP keepalive packet and records the send time for RTT measurement.

UdpTransport : _startKeepaliveLoop ( )  -> ()

Starts the keepalive loop that fires every five seconds while the UDP socket is open.

UdpTransport : _startUdpReceiveLoop ( )  -> ()

Starts the UDP receive loop. Routes keepalive echo packets to the RTT tracker and RTP audio packets to onAudioPacket after decryption via decryptPacket.

UdpTransport : sendOpusAsync ( audioFrame rtpCrypto daveEncryptor )  -> ()

Builds an RTP packet from the given Opus frame, encrypts it (with optional DAVE layer), and sends it over UDP.

Parameters

audioFrame: buffer
rtpCrypto: RtpCrypto
daveEncryptor: any?
UdpTransport . new ( loggerInstance )  -> UdpTransport

Responsible for constructing this class.

Parameters

loggerInstance: Logger

Returns

UdpTransport