@vibexnpm/talkx 3.0.6 → 3.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +56 -2
- package/dist/talkflow-sdk.esm.js +1 -1
- package/dist/talkflow-sdk.esm.js.map +1 -1
- package/dist/talkflow-sdk.standalone.js +1 -1
- package/dist/talkflow-sdk.standalone.js.map +1 -1
- package/dist/talkflow-sdk.umd.js +1 -1
- package/dist/talkflow-sdk.umd.js.map +1 -1
- package/package.json +3 -1
- package/src/TalkFlowClient.js +13 -0
- package/src/chat/ChatClient.js +371 -5
- package/src/constants.js +13 -0
- package/src/core/ConnectionManager.js +214 -1
- package/src/talkflow/eventForwarding.js +8 -0
- package/src/talkflow/session.js +12 -0
- package/types/index.d.ts +56 -2
package/dist/index.d.ts
CHANGED
|
@@ -926,10 +926,35 @@ export interface TalkFlowClientOptions {
|
|
|
926
926
|
serverUrl?: string;
|
|
927
927
|
/** SockJS 사용 여부. 기본 true. */
|
|
928
928
|
useSockJS?: boolean;
|
|
929
|
-
/** 재연결 지연 (ms). 기본 5000. */
|
|
929
|
+
/** 최초 재연결 지연 (ms). 기본 5000. 이후 지수적으로 증가한다. */
|
|
930
930
|
reconnectDelay?: number;
|
|
931
|
+
/** 지수 백오프 상한 (ms). 기본 30000. */
|
|
932
|
+
maxReconnectDelay?: number;
|
|
931
933
|
/** 최대 재연결 시도. 기본 10. */
|
|
932
934
|
maxReconnectAttempts?: number;
|
|
935
|
+
/** 수신 하트비트 간격 (ms). 기본 10000. */
|
|
936
|
+
heartbeatIncoming?: number;
|
|
937
|
+
/** 발신 하트비트 간격 (ms). 기본 10000. */
|
|
938
|
+
heartbeatOutgoing?: number;
|
|
939
|
+
/**
|
|
940
|
+
* 탭 복귀(visibilitychange/pageshow) · 네트워크 복구(online) 시 자동 재연결. 기본 true.
|
|
941
|
+
*
|
|
942
|
+
* <p>재시도 횟수를 소진해 죽은 연결도 되살린다. 단 {@code connect()} 를 한 번도 호출하지 않았거나
|
|
943
|
+
* {@code disconnect()} 로 명시적으로 끊은 경우에는 동작하지 않는다.</p>
|
|
944
|
+
*/
|
|
945
|
+
resumeOnVisibility?: boolean;
|
|
946
|
+
/**
|
|
947
|
+
* 재연결/복귀 후 끊긴 구간의 메시지를 자동으로 다시 불러올지. 기본 true.
|
|
948
|
+
*
|
|
949
|
+
* <p>복구된 메시지는 일반 `chatMessage` 이벤트로 재생되므로 수신 코드를 바꿀 필요가 없다.</p>
|
|
950
|
+
*/
|
|
951
|
+
syncOnReconnect?: boolean;
|
|
952
|
+
/** 갭 복구 첫 페이지에만 적용되는 되감기 폭 (ms). 기본 3000. 서버가 상한 clamp 후 1회 차감. */
|
|
953
|
+
rewindMillis?: number;
|
|
954
|
+
/** 갭 복구 페이지 상한. 기본 5. 초과 시 최신 페이지 재로드로 전환하고 `gapTruncated` 를 발행. */
|
|
955
|
+
maxSyncPages?: number;
|
|
956
|
+
/** 갭 복구 페이지 크기. 기본 100. */
|
|
957
|
+
syncPageSize?: number;
|
|
933
958
|
/** WebRTC ICE 서버. */
|
|
934
959
|
iceServers?: RTCIceServer[];
|
|
935
960
|
/** connect() 시 채팅방 리스트 자동 구독. 기본 true. */
|
|
@@ -1229,7 +1254,7 @@ export interface RetentionCleanupPayload {
|
|
|
1229
1254
|
/**
|
|
1230
1255
|
* TalkFlowClient 이벤트 맵 — 런타임 {@code TalkFlowClient.js} 의 {@code this.emit(...)} 호출 기반.
|
|
1231
1256
|
*
|
|
1232
|
-
* <p><b>Connection 관련</b>: stateChange, connected, disconnected, reconnecting, connectionError, tokenSet, loggedOut</p>
|
|
1257
|
+
* <p><b>Connection 관련</b>: stateChange, connected, disconnected, reconnecting, reconnected, resumed, connectionError, tokenSet, loggedOut</p>
|
|
1233
1258
|
* <p><b>Chat 관련 (ChatClient 이벤트를 이 이름으로 re-emit)</b>: chatMessage, newChatMessage, messageUpdated, messageDeleted, reactionChanged, linkPreviewAttached, messageRead, typing, assistantProgress, memberJoined, memberLeft, roomSubscribed, roomUnsubscribed, roomListSubscribed, roomListUnsubscribed, roomListUpdate, roomListMessage, roomListCreated, roomListJoined, roomListLeft, roomListSelfLeft, roomListRoomUpdated, retentionCleanup</p>
|
|
1234
1259
|
* <p><b>Push 관련</b>: pushEnabled, pushFailed, pushNotification</p>
|
|
1235
1260
|
* <p><b>WebRTC 관련</b>: localStreamStarted, localStreamStopped, remoteTrack, screenShareStarted, screenShareEnded, deviceChange, mediaStateChanged, callStarted, callEnded, callRequested, callAccepted, callRejected, callCancelled, callInvitation, callBusy, incomingCall, incomingCallWhileBusy, userJoined, userLeft, participantLeft, participantMediaState, peerConnected, peerDisconnected, peerClosed, webrtcError</p>
|
|
@@ -1240,6 +1265,20 @@ export interface TalkFlowClientEvents {
|
|
|
1240
1265
|
connected: unknown;
|
|
1241
1266
|
disconnected: unknown;
|
|
1242
1267
|
reconnecting: { attempt: number };
|
|
1268
|
+
/**
|
|
1269
|
+
* 재연결 **성공**. 최초 연결에는 발행되지 않는다.
|
|
1270
|
+
*
|
|
1271
|
+
* <p>{@link TalkFlowClientEvents.resumed} 와 상호 배타적 — 재동기화 시점을 모두 잡으려면 둘 다 구독한다.</p>
|
|
1272
|
+
*/
|
|
1273
|
+
reconnected: { attempts: number };
|
|
1274
|
+
/**
|
|
1275
|
+
* 탭 복귀 / 네트워크 복구 감지 — **연결이 살아 있어 재연결이 불필요했던** 경우에만 발행된다.
|
|
1276
|
+
*
|
|
1277
|
+
* <p>백그라운드 동안 프레임을 놓쳤을 수 있으므로 소비자는 이 시점에도 재동기화해야 한다.
|
|
1278
|
+
* 복귀가 재연결을 유발한 경우에는 이 이벤트 대신 {@link TalkFlowClientEvents.reconnected} 가
|
|
1279
|
+
* 발행된다(두 이벤트가 겹치지 않아 재동기화가 중복 실행되지 않는다).</p>
|
|
1280
|
+
*/
|
|
1281
|
+
resumed: { reason: 'visibilitychange' | 'pageshow' | 'online' };
|
|
1243
1282
|
connectionError: unknown;
|
|
1244
1283
|
tokenSet: { userId: string };
|
|
1245
1284
|
loggedOut: void;
|
|
@@ -1288,6 +1327,21 @@ export interface TalkFlowClientEvents {
|
|
|
1288
1327
|
roomListRoomUpdated: RoomListUpdateEvent;
|
|
1289
1328
|
retentionCleanup: RetentionCleanupPayload;
|
|
1290
1329
|
|
|
1330
|
+
// 갭 복구 — 복구된 메시지 자체는 일반 chatMessage 로 재생되므로 아래는 모두 선택 구독용.
|
|
1331
|
+
/** 갭 복구 시작 (전 방 1회). */
|
|
1332
|
+
syncStarted: { roomIds: string[]; reason: string };
|
|
1333
|
+
/** 갭 복구 완료 (전 방 1회). */
|
|
1334
|
+
syncCompleted: {
|
|
1335
|
+
rooms: Array<{ roomId: string; recovered: number; truncated: boolean; durationMs: number }>;
|
|
1336
|
+
totalRecovered: number;
|
|
1337
|
+
durationMs: number;
|
|
1338
|
+
reason: string;
|
|
1339
|
+
};
|
|
1340
|
+
/** 갭이 `maxSyncPages` 를 넘거나 커서가 만료돼 최신 페이지 재로드로 전환됨 (방 단위). */
|
|
1341
|
+
gapTruncated: { roomId: string; fetched: number; reason?: 'cursorExpired' };
|
|
1342
|
+
/** 재연결 시 방 목록 전체 스냅샷. delta 계약인 `roomListUpdate` 와 별개. */
|
|
1343
|
+
roomListSynced: { rooms: ChatRoomResponse[]; reason: string };
|
|
1344
|
+
|
|
1291
1345
|
// Push
|
|
1292
1346
|
pushEnabled: void;
|
|
1293
1347
|
/**
|