Skip to content

Commit 954c929

Browse files
authored
feat: implement lazy initialization of Socket.IO client (#55)
1 parent 97793e5 commit 954c929

2 files changed

Lines changed: 28 additions & 12 deletions

File tree

src/client.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,16 @@ export function createClient(config: {
5959
token,
6060
};
6161

62-
const socket = RoomsSocket({
63-
config: socketConfig,
64-
});
62+
let socket: ReturnType<typeof RoomsSocket> | null = null;
63+
64+
const getSocket = () => {
65+
if (!socket) {
66+
socket = RoomsSocket({
67+
config: socketConfig,
68+
});
69+
}
70+
return socket;
71+
};
6572

6673
const headers = {
6774
...optionalHeaders,
@@ -114,15 +121,17 @@ export function createClient(config: {
114121
functions: createFunctionsModule(functionsAxiosClient, appId),
115122
agents: createAgentsModule({
116123
axios: axiosClient,
117-
socket,
124+
getSocket,
118125
appId,
119126
serverUrl,
120127
token,
121128
}),
122129
appLogs: createAppLogsModule(axiosClient, appId),
123130
users: createUsersModule(axiosClient, appId),
124131
cleanup: () => {
125-
socket.disconnect();
132+
if (socket) {
133+
socket.disconnect();
134+
}
126135
},
127136
};
128137

@@ -134,14 +143,16 @@ export function createClient(config: {
134143
functions: createFunctionsModule(serviceRoleFunctionsAxiosClient, appId),
135144
agents: createAgentsModule({
136145
axios: serviceRoleAxiosClient,
137-
socket,
146+
getSocket,
138147
appId,
139148
serverUrl,
140149
token,
141150
}),
142151
appLogs: createAppLogsModule(serviceRoleAxiosClient, appId),
143152
cleanup: () => {
144-
socket.disconnect();
153+
if (socket) {
154+
socket.disconnect();
155+
}
145156
},
146157
};
147158

@@ -180,9 +191,12 @@ export function createClient(config: {
180191
*/
181192
setToken(newToken: string) {
182193
userModules.auth.setToken(newToken);
183-
socket.updateConfig({
184-
token: newToken,
185-
});
194+
if (socket) {
195+
socket.updateConfig({
196+
token: newToken,
197+
});
198+
}
199+
socketConfig.token = newToken;
186200
},
187201

188202
/**

src/modules/agents.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ import { getAccessToken } from "../utils/auth-utils.js";
66

77
export type AgentsModuleConfig = {
88
axios: AxiosInstance;
9-
socket: ReturnType<typeof RoomsSocket>;
9+
getSocket: () => ReturnType<typeof RoomsSocket>;
1010
appId: string;
1111
serverUrl?: string;
1212
token?: string;
1313
};
1414

1515
export function createAgentsModule({
1616
axios,
17-
socket,
17+
getSocket,
1818
appId,
1919
serverUrl,
2020
token,
@@ -52,6 +52,7 @@ export function createAgentsModule({
5252
message: AgentMessage
5353
) => {
5454
const room = `/agent-conversations/${conversation.id}`;
55+
const socket = getSocket();
5556
await socket.updateModel(
5657
room,
5758
{
@@ -70,6 +71,7 @@ export function createAgentsModule({
7071
onUpdate?: (conversation: AgentConversation) => void
7172
) => {
7273
const room = `/agent-conversations/${conversationId}`;
74+
const socket = getSocket();
7375
return socket.subscribeToRoom(room, {
7476
connect: () => {},
7577
update_model: ({ data: jsonStr }) => {

0 commit comments

Comments
 (0)