Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Openai Openai node EventEmitter On

From Leeroopedia
Revision as of 13:35, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Openai_Openai_node_EventEmitter_On.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Sources
Domains Realtime, Event_Driven_Architecture
Last Updated 2026-02-15 00:00 GMT

Overview

Concrete tool for registering typed event listeners on Realtime API connections provided by the openai-node SDK.

Description

The EventEmitter class provides a custom typed event emitter (NOT Node.js EventEmitter) with on(), off(), and once() methods. The Realtime API connections inherit from OpenAIRealtimeEmitter which extends this EventEmitter with Realtime-specific event types.

Key server events include: response.text.delta, response.audio.delta, response.audio_transcript.delta, response.function_call_arguments.delta, response.done, error, session.created, session.updated.

Usage

Use rt.on(eventName, callback) to register event listeners. Use rt.off(eventName, callback) to remove listeners. Use rt.once(eventName, callback) for one-time listeners.

Code Reference

Source Location

  • Repository: openai-node
  • File: src/lib/EventEmitter.ts
  • Lines: L12-98 (EventEmitter class), L24-29 (on method), L38-44 (off method), L51-56 (once method)

Signature

export class EventEmitter<EventTypes extends Record<string, (...args: any[]) => void>> {
  on<Event extends keyof EventTypes>(
    event: Event,
    listener: EventTypes[Event],
  ): this;

  off<Event extends keyof EventTypes>(
    event: Event,
    listener: EventTypes[Event],
  ): this;

  once<Event extends keyof EventTypes>(
    event: Event,
    listener: EventTypes[Event],
  ): this;
}

Import

// EventEmitter is used internally; access via rt.on(), rt.off(), rt.once()

I/O Contract

Inputs

Name Type Required Description
event keyof EventTypes Yes Event name (e.g., 'response.text.delta', 'error')
listener Function Yes Callback function receiving the typed event payload

Outputs

Name Type Description
this EventEmitter Returns self for chaining
(callback) void Listener is invoked with typed event payload when event occurs

Usage Examples

import { OpenAIRealtimeWS } from 'openai/realtime/ws';

const rt = await OpenAIRealtimeWS.create(client, {
  model: 'gpt-4o-realtime-preview',
});

// Handle text deltas
rt.on('response.text.delta', (event) => {
  process.stdout.write(event.delta);
});

// Handle audio transcript
rt.on('response.audio_transcript.delta', (event) => {
  process.stdout.write(event.delta);
});

// Handle completion
rt.on('response.done', (event) => {
  console.log('\nResponse complete');
});

// Handle errors
rt.on('error', (event) => {
  console.error('Error:', event.error.message);
});

// One-time session setup
rt.once('session.created', () => {
  console.log('Connected to Realtime API');
});

Related Pages

Implements Principle

Requires Environment

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment