diff --git a/src/hooks/use-live-api.ts b/src/hooks/use-live-api.ts
index 69a940cc7..30659c57a 100644
--- a/src/hooks/use-live-api.ts
+++ b/src/hooks/use-live-api.ts
@@ -68,12 +68,17 @@ export function useLiveAPI(options: LiveClientOptions): UseLiveAPIResults {
setConnected(false);
};
+ const onError = (error: ErrorEvent) => {
+ console.error("error", error);
+ };
+
const stopAudioStreamer = () => audioStreamerRef.current?.stop();
const onAudio = (data: ArrayBuffer) =>
audioStreamerRef.current?.addPCM16(new Uint8Array(data));
client
+ .on("error", onError)
.on("open", onOpen)
.on("close", onClose)
.on("interrupted", stopAudioStreamer)
@@ -81,10 +86,12 @@ export function useLiveAPI(options: LiveClientOptions): UseLiveAPIResults {
return () => {
client
+ .off("error", onError)
.off("open", onOpen)
.off("close", onClose)
.off("interrupted", stopAudioStreamer)
- .off("audio", onAudio);
+ .off("audio", onAudio)
+ .disconnect();
};
}, [client]);
diff --git a/src/lib/genai-live-client.ts b/src/lib/genai-live-client.ts
index 60c266d98..54936c04d 100644
--- a/src/lib/genai-live-client.ts
+++ b/src/lib/genai-live-client.ts
@@ -44,6 +44,8 @@ export interface LiveClientEventTypes {
close: (event: CloseEvent) => void;
// Emitted when content is received from the server
content: (data: LiveServerContent) => void;
+ // Emitted when an error occurs
+ error: (error: ErrorEvent) => void;
// Emitted when the server interrupts the current generation
interrupted: () => void;
// Emitted for logging events
@@ -161,6 +163,7 @@ export class GenAILiveClient extends EventEmitter {
protected onerror(e: ErrorEvent) {
this.log("server.error", e.message);
+ this.emit("error", e);
}
protected onclose(e: CloseEvent) {