Skip to content

bodhi-realtime-agent / DirectRtcClientChannel

Class: DirectRtcClientChannel ​

Defined in: src/transport/direct-rtc-client-channel.ts:34

Client media channel: JSON/control on WebSocket (SessionClientSender), audio over Opus RTP when weriftOpus is configured; otherwise outbound assistant PCM uses sender.sendAudio (same wire as legacy WebSocket clients).

Implements ​

Constructors ​

Constructor ​

new DirectRtcClientChannel(options): DirectRtcClientChannel

Defined in: src/transport/direct-rtc-client-channel.ts:46

Parameters ​

options ​

DirectRtcClientChannelOptions

Returns ​

DirectRtcClientChannel

Properties ​

supportsPlaybackStateProtocol ​

readonly supportsPlaybackStateProtocol: boolean

Defined in: src/transport/direct-rtc-client-channel.ts:44

True only when assistant audio renders over the WebSocket PCM path — the Opus-RTP sink sends audio on a separate channel from the JSON control plane, so ordering with audio.done cannot be guaranteed there.

Implementation of ​

IClientChannel.supportsPlaybackStateProtocol

Accessors ​

isRtcAudioReady ​

Get Signature ​

get isRtcAudioReady(): boolean

Defined in: src/transport/direct-rtc-client-channel.ts:71

True once Opus RTP outbound is wired (assistant audio should not use WebSocket binary).

Returns ​

boolean


lastClientSignaling ​

Get Signature ​

get lastClientSignaling(): RtcClientSignalingMessage | null

Defined in: src/transport/direct-rtc-client-channel.ts:66

Latest client→server signaling message (for debugging / tests).

Returns ​

RtcClientSignalingMessage | null

Methods ​

feedSignaling() ​

feedSignaling(message): void

Defined in: src/transport/direct-rtc-client-channel.ts:79

Accept SDP / ICE payloads from the client JSON WebSocket. When weriftOpus is enabled, drives the embedded werift peer connection.

Parameters ​

message ​

RtcClientSignalingMessage

Returns ​

void


sendAudioToClient() ​

sendAudioToClient(data): void

Defined in: src/transport/direct-rtc-client-channel.ts:107

Parameters ​

data ​

Buffer

Returns ​

void

Implementation of ​

IClientChannel.sendAudioToClient


sendJsonAfterAudio() ​

sendJsonAfterAudio(message): void

Defined in: src/transport/direct-rtc-client-channel.ts:134

Playback-state protocol: deliver JSON in order after the turn's audio. Only meaningful when audio uses the WebSocket PCM path (no Opus engine); dropped during a reconnect-buffering window.

Parameters ​

message ​

AnyServerToClientMessage

Returns ​

void

Implementation of ​

IClientChannel.sendJsonAfterAudio


sendJsonToClient() ​

sendJsonToClient(message): void

Defined in: src/transport/direct-rtc-client-channel.ts:127

Parameters ​

message ​

AnyServerToClientMessage

Returns ​

void

Implementation of ​

IClientChannel.sendJsonToClient


start() ​

start(): Promise<void>

Defined in: src/transport/direct-rtc-client-channel.ts:95

Returns ​

Promise<void>

Implementation of ​

IClientChannel.start


startBuffering() ​

startBuffering(): void

Defined in: src/transport/direct-rtc-client-channel.ts:139

Returns ​

void

Implementation of ​

IClientChannel.startBuffering


stop() ​

stop(): Promise<void>

Defined in: src/transport/direct-rtc-client-channel.ts:99

Returns ​

Promise<void>

Implementation of ​

IClientChannel.stop


stopBuffering() ​

stopBuffering(): Buffer<ArrayBufferLike>[]

Defined in: src/transport/direct-rtc-client-channel.ts:144

Returns ​

Buffer<ArrayBufferLike>[]

Implementation of ​

IClientChannel.stopBuffering

Built with VitePress