@koi-design/callkit 1.0.24 → 1.0.26-beta.1
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 +33 -0
- package/dist/index.global.js +124 -18
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +110 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +110 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
1
2
|
import { Invitation, UserAgent, Registerer } from 'sip.js';
|
|
2
3
|
|
|
3
4
|
declare class Api {
|
|
@@ -17,7 +18,9 @@ declare class Api {
|
|
|
17
18
|
* @returns
|
|
18
19
|
*/
|
|
19
20
|
setUserStatus(params: any): Promise<any>;
|
|
21
|
+
measureRTT(config?: AxiosRequestConfig): Promise<any>;
|
|
20
22
|
private post;
|
|
23
|
+
private get;
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
declare class Call {
|
|
@@ -140,7 +143,14 @@ declare const KitEvent: {
|
|
|
140
143
|
* User status change
|
|
141
144
|
*/
|
|
142
145
|
USER_STATUS_CHANGE: string;
|
|
146
|
+
/**
|
|
147
|
+
* SOCKET CONNECT EVENT
|
|
148
|
+
*/
|
|
143
149
|
CONNECT_EVENT: string;
|
|
150
|
+
/**
|
|
151
|
+
* NETWORK EVENT
|
|
152
|
+
*/
|
|
153
|
+
NETWORK_EVENT: string;
|
|
144
154
|
};
|
|
145
155
|
declare const SocketSendEvent: {
|
|
146
156
|
/**
|
|
@@ -229,8 +239,11 @@ declare class Socket {
|
|
|
229
239
|
private reconnectTimer?;
|
|
230
240
|
private isReconnecting;
|
|
231
241
|
private reconnectAttempts;
|
|
242
|
+
closing: boolean;
|
|
232
243
|
constructor(callKit: CallKit);
|
|
233
244
|
init(): void;
|
|
245
|
+
close(code?: number, reason?: string): void;
|
|
246
|
+
gracefulClose(): void;
|
|
234
247
|
private reconnect;
|
|
235
248
|
private connect;
|
|
236
249
|
private onOpen;
|
|
@@ -254,6 +267,22 @@ declare class Socket {
|
|
|
254
267
|
private attemptReconnect;
|
|
255
268
|
}
|
|
256
269
|
|
|
270
|
+
interface MonitorConfig {
|
|
271
|
+
interval: number;
|
|
272
|
+
apiEndpoint: string;
|
|
273
|
+
}
|
|
274
|
+
declare class Monitor {
|
|
275
|
+
private callKit;
|
|
276
|
+
interval: number;
|
|
277
|
+
apiEndpoint: string;
|
|
278
|
+
monitorIntervalHandler: ReturnType<typeof setInterval> | null;
|
|
279
|
+
constructor(callKit: CallKit);
|
|
280
|
+
getEndPointPath: () => string;
|
|
281
|
+
measureRTT: () => Promise<void>;
|
|
282
|
+
stopRTTMonitoring(): void;
|
|
283
|
+
startRTTMonitoring(): void;
|
|
284
|
+
}
|
|
285
|
+
|
|
257
286
|
interface WebrtcConstranis {
|
|
258
287
|
audio: {
|
|
259
288
|
autoGainControl?: boolean;
|
|
@@ -270,6 +299,7 @@ interface IConfig {
|
|
|
270
299
|
constrains: WebrtcConstranis;
|
|
271
300
|
socket: string;
|
|
272
301
|
reconnect?: SocketConfig;
|
|
302
|
+
monitor?: MonitorConfig;
|
|
273
303
|
userInfo: {
|
|
274
304
|
wsUrl: string;
|
|
275
305
|
sessionId: string;
|
|
@@ -456,6 +486,7 @@ declare class CallKit {
|
|
|
456
486
|
connect: Connect;
|
|
457
487
|
socket: Socket;
|
|
458
488
|
user: User;
|
|
489
|
+
monitor: Monitor;
|
|
459
490
|
listener: Listener[];
|
|
460
491
|
constructor(options: ConfigEntity);
|
|
461
492
|
login(username: string, password: string, extra?: {
|
|
@@ -474,6 +505,8 @@ declare class CallKit {
|
|
|
474
505
|
setSleep(): Promise<void>;
|
|
475
506
|
setBusy(): Promise<void>;
|
|
476
507
|
reset(): Promise<void>;
|
|
508
|
+
startRTTMonitoring(): void;
|
|
509
|
+
stopRTTMonitoring(): void;
|
|
477
510
|
on(event: kitEventType, callback: (...args: any[]) => void): void;
|
|
478
511
|
off(event: kitEventType, callback?: (...args: any[]) => void): void;
|
|
479
512
|
removeAllListeners(): void;
|
package/dist/index.global.js
CHANGED
|
@@ -3128,29 +3128,29 @@ var WebCall = (() => {
|
|
|
3128
3128
|
var Axios = require_Axios();
|
|
3129
3129
|
var mergeConfig = require_mergeConfig();
|
|
3130
3130
|
var defaults = require_defaults();
|
|
3131
|
-
function createInstance(
|
|
3132
|
-
var context = new Axios(
|
|
3131
|
+
function createInstance(defaultConfig2) {
|
|
3132
|
+
var context = new Axios(defaultConfig2);
|
|
3133
3133
|
var instance2 = bind(Axios.prototype.request, context);
|
|
3134
3134
|
utils.extend(instance2, Axios.prototype, context);
|
|
3135
3135
|
utils.extend(instance2, context);
|
|
3136
3136
|
instance2.create = function create(instanceConfig) {
|
|
3137
|
-
return createInstance(mergeConfig(
|
|
3137
|
+
return createInstance(mergeConfig(defaultConfig2, instanceConfig));
|
|
3138
3138
|
};
|
|
3139
3139
|
return instance2;
|
|
3140
3140
|
}
|
|
3141
|
-
var
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3141
|
+
var axios3 = createInstance(defaults);
|
|
3142
|
+
axios3.Axios = Axios;
|
|
3143
|
+
axios3.Cancel = require_Cancel();
|
|
3144
|
+
axios3.CancelToken = require_CancelToken();
|
|
3145
|
+
axios3.isCancel = require_isCancel();
|
|
3146
|
+
axios3.VERSION = require_data().version;
|
|
3147
|
+
axios3.all = function all(promises) {
|
|
3148
3148
|
return Promise.all(promises);
|
|
3149
3149
|
};
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
module.exports =
|
|
3153
|
-
module.exports.default =
|
|
3150
|
+
axios3.spread = require_spread();
|
|
3151
|
+
axios3.isAxiosError = require_isAxiosError();
|
|
3152
|
+
module.exports = axios3;
|
|
3153
|
+
module.exports.default = axios3;
|
|
3154
3154
|
}
|
|
3155
3155
|
});
|
|
3156
3156
|
|
|
@@ -3216,6 +3216,10 @@ var WebCall = (() => {
|
|
|
3216
3216
|
data: params
|
|
3217
3217
|
});
|
|
3218
3218
|
}
|
|
3219
|
+
async measureRTT(config) {
|
|
3220
|
+
this.callKit.logger.debug(`Request ${config.url}:`, config.data);
|
|
3221
|
+
return axios_default(config);
|
|
3222
|
+
}
|
|
3219
3223
|
async post(config) {
|
|
3220
3224
|
this.callKit.logger.debug(`Request ${config.url}:`, config.data);
|
|
3221
3225
|
const { userInfo, host } = this.callKit.config.getConfig();
|
|
@@ -3247,6 +3251,12 @@ var WebCall = (() => {
|
|
|
3247
3251
|
}
|
|
3248
3252
|
throw new Error(message ?? "Request failed");
|
|
3249
3253
|
}
|
|
3254
|
+
async get(config) {
|
|
3255
|
+
return this.post({
|
|
3256
|
+
...config,
|
|
3257
|
+
method: "get"
|
|
3258
|
+
});
|
|
3259
|
+
}
|
|
3250
3260
|
};
|
|
3251
3261
|
|
|
3252
3262
|
// package/const.ts
|
|
@@ -3379,7 +3389,14 @@ var WebCall = (() => {
|
|
|
3379
3389
|
* User status change
|
|
3380
3390
|
*/
|
|
3381
3391
|
USER_STATUS_CHANGE: "userStatusChange",
|
|
3382
|
-
|
|
3392
|
+
/**
|
|
3393
|
+
* SOCKET CONNECT EVENT
|
|
3394
|
+
*/
|
|
3395
|
+
CONNECT_EVENT: "CONNECT_EVENT",
|
|
3396
|
+
/**
|
|
3397
|
+
* NETWORK EVENT
|
|
3398
|
+
*/
|
|
3399
|
+
NETWORK_EVENT: "NETWORK_EVENT"
|
|
3383
3400
|
};
|
|
3384
3401
|
var ErrorCode = {
|
|
3385
3402
|
/**
|
|
@@ -3601,7 +3618,13 @@ var WebCall = (() => {
|
|
|
3601
3618
|
INCALL_RECONNECT_ERROR: "INCALL_RECONNECT_ERROR",
|
|
3602
3619
|
INCALL_RECONNECT_SUCCESS: "INCALL_RECONNECT_SUCCESS",
|
|
3603
3620
|
OPTIONS_HEARTBEAT_EXPIRED: "OPTIONS_HEARTBEAT_EXPIRED",
|
|
3604
|
-
USER_AGENT_START_ERROR: "USER_AGENT_START_ERROR"
|
|
3621
|
+
USER_AGENT_START_ERROR: "USER_AGENT_START_ERROR",
|
|
3622
|
+
CONNECT_CLOSING: "CONNECT_CLOSING",
|
|
3623
|
+
CONNECT_CLOSING_END: "CONNECT_CLOSING_END"
|
|
3624
|
+
};
|
|
3625
|
+
var NetWorkEvent = {
|
|
3626
|
+
RTT_MEASURE_SUCCESS: "RTT_MEASURE_SUCCESS",
|
|
3627
|
+
RTT_MEASURE_FAILED: "RTT_MEASURE_FAILED"
|
|
3605
3628
|
};
|
|
3606
3629
|
|
|
3607
3630
|
// package/call.ts
|
|
@@ -18917,6 +18940,59 @@ var WebCall = (() => {
|
|
|
18917
18940
|
}
|
|
18918
18941
|
};
|
|
18919
18942
|
|
|
18943
|
+
// package/monitor.ts
|
|
18944
|
+
var import_axios3 = __toESM(require_axios2());
|
|
18945
|
+
var defaultConfig = {
|
|
18946
|
+
interval: 5e3,
|
|
18947
|
+
apiEndpoint: "/livez"
|
|
18948
|
+
};
|
|
18949
|
+
var Monitor = class {
|
|
18950
|
+
callKit;
|
|
18951
|
+
interval = defaultConfig.interval;
|
|
18952
|
+
apiEndpoint = defaultConfig.apiEndpoint;
|
|
18953
|
+
monitorIntervalHandler = null;
|
|
18954
|
+
constructor(callKit) {
|
|
18955
|
+
this.callKit = callKit;
|
|
18956
|
+
const { monitor } = this.callKit.config.getConfig();
|
|
18957
|
+
this.interval = monitor?.interval ?? defaultConfig.interval;
|
|
18958
|
+
this.apiEndpoint = monitor?.apiEndpoint ?? defaultConfig.apiEndpoint;
|
|
18959
|
+
this.monitorIntervalHandler = null;
|
|
18960
|
+
}
|
|
18961
|
+
getEndPointPath = () => {
|
|
18962
|
+
const config = this.callKit.config.getConfig();
|
|
18963
|
+
const defaultPath = `${config.host}${this.apiEndpoint}`;
|
|
18964
|
+
const endPointPath = config.monitor?.apiEndpoint ?? defaultPath;
|
|
18965
|
+
return endPointPath;
|
|
18966
|
+
};
|
|
18967
|
+
measureRTT = async () => {
|
|
18968
|
+
try {
|
|
18969
|
+
const endPoint = this.getEndPointPath();
|
|
18970
|
+
const startTime = performance.now();
|
|
18971
|
+
await import_axios3.default.get(endPoint);
|
|
18972
|
+
const endTime = performance.now();
|
|
18973
|
+
const rtt = Math.round(endTime - startTime);
|
|
18974
|
+
this.callKit.trigger(KitEvent.NETWORK_EVENT, {
|
|
18975
|
+
event: NetWorkEvent.RTT_MEASURE_SUCCESS,
|
|
18976
|
+
rtt
|
|
18977
|
+
});
|
|
18978
|
+
} catch (error) {
|
|
18979
|
+
this.callKit.trigger(KitEvent.NETWORK_EVENT, {
|
|
18980
|
+
event: NetWorkEvent.RTT_MEASURE_FAILED,
|
|
18981
|
+
rtt: 0
|
|
18982
|
+
});
|
|
18983
|
+
}
|
|
18984
|
+
};
|
|
18985
|
+
stopRTTMonitoring() {
|
|
18986
|
+
if (this.monitorIntervalHandler) {
|
|
18987
|
+
clearInterval(this.monitorIntervalHandler);
|
|
18988
|
+
}
|
|
18989
|
+
}
|
|
18990
|
+
startRTTMonitoring() {
|
|
18991
|
+
this.stopRTTMonitoring();
|
|
18992
|
+
this.monitorIntervalHandler = setInterval(this.measureRTT, this.interval);
|
|
18993
|
+
}
|
|
18994
|
+
};
|
|
18995
|
+
|
|
18920
18996
|
// package/socket.ts
|
|
18921
18997
|
var RECONNECT_CONFIG = {
|
|
18922
18998
|
enabled: true,
|
|
@@ -18940,6 +19016,7 @@ var WebCall = (() => {
|
|
|
18940
19016
|
reconnectTimer;
|
|
18941
19017
|
isReconnecting = false;
|
|
18942
19018
|
reconnectAttempts = 0;
|
|
19019
|
+
closing = false;
|
|
18943
19020
|
constructor(callKit) {
|
|
18944
19021
|
this.callKit = callKit;
|
|
18945
19022
|
const { reconnect } = this.callKit.config.getConfig();
|
|
@@ -18953,6 +19030,16 @@ var WebCall = (() => {
|
|
|
18953
19030
|
this.callKit.logger.debug(`socket init: ${socket}`);
|
|
18954
19031
|
this.connect(socket);
|
|
18955
19032
|
}
|
|
19033
|
+
close(code, reason) {
|
|
19034
|
+
this.ws?.close(code, reason);
|
|
19035
|
+
}
|
|
19036
|
+
gracefulClose() {
|
|
19037
|
+
this.closing = true;
|
|
19038
|
+
this.callKit.trigger(KitEvent.CONNECT_EVENT, {
|
|
19039
|
+
event: ConnectEvent.CONNECT_CLOSING
|
|
19040
|
+
});
|
|
19041
|
+
this.close(1e3, "normal");
|
|
19042
|
+
}
|
|
18956
19043
|
reconnect(ev) {
|
|
18957
19044
|
this.callKit.logger.debug("socket reconnect", ev);
|
|
18958
19045
|
this.isConnected = false;
|
|
@@ -19003,7 +19090,10 @@ var WebCall = (() => {
|
|
|
19003
19090
|
}
|
|
19004
19091
|
onClose(ev) {
|
|
19005
19092
|
this.callKit.logger.debug("socket onClose", ev);
|
|
19006
|
-
if (
|
|
19093
|
+
if (ev.code === 4002) {
|
|
19094
|
+
this.callKit.logger.debug("socket onClose", ev.reason);
|
|
19095
|
+
return;
|
|
19096
|
+
} else if ((ev.code !== 1e3 || !ev.wasClean) && this.callKit.connect.isRegistered()) {
|
|
19007
19097
|
this.callKit.trigger(KitEvent.CONNECT_EVENT, {
|
|
19008
19098
|
event: ConnectEvent.INCALL_CONNECT_ERROR,
|
|
19009
19099
|
err: ev
|
|
@@ -19018,6 +19108,10 @@ var WebCall = (() => {
|
|
|
19018
19108
|
}
|
|
19019
19109
|
this.callKit.connect.hangup();
|
|
19020
19110
|
this.reset();
|
|
19111
|
+
this.closing = false;
|
|
19112
|
+
this.callKit.trigger(KitEvent.CONNECT_EVENT, {
|
|
19113
|
+
event: ConnectEvent.CONNECT_CLOSING_END
|
|
19114
|
+
});
|
|
19021
19115
|
}
|
|
19022
19116
|
}
|
|
19023
19117
|
onError(ev) {
|
|
@@ -19225,7 +19319,7 @@ var WebCall = (() => {
|
|
|
19225
19319
|
}
|
|
19226
19320
|
this.recivedClose = false;
|
|
19227
19321
|
this.callKit.logger.debug("socket destroy");
|
|
19228
|
-
this.ws.close();
|
|
19322
|
+
this.ws.close(4002, "sdk reset");
|
|
19229
19323
|
this.isConnected = false;
|
|
19230
19324
|
}
|
|
19231
19325
|
}
|
|
@@ -19319,6 +19413,7 @@ var WebCall = (() => {
|
|
|
19319
19413
|
connect;
|
|
19320
19414
|
socket;
|
|
19321
19415
|
user;
|
|
19416
|
+
monitor;
|
|
19322
19417
|
listener = [];
|
|
19323
19418
|
constructor(options) {
|
|
19324
19419
|
this.config = new Config(this);
|
|
@@ -19336,6 +19431,8 @@ var WebCall = (() => {
|
|
|
19336
19431
|
);
|
|
19337
19432
|
this.config.setConfig("reconnect", options.reconnect);
|
|
19338
19433
|
this.logger = new Logger(this, options.log);
|
|
19434
|
+
this.config.setConfig("monitor", options.monitor);
|
|
19435
|
+
this.monitor = new Monitor(this);
|
|
19339
19436
|
this.logger.debug("callKit init", options);
|
|
19340
19437
|
this.api = new Api(this);
|
|
19341
19438
|
this.connect = new Connect(this);
|
|
@@ -19405,6 +19502,9 @@ var WebCall = (() => {
|
|
|
19405
19502
|
await this.user.setUserStatus(UserStatus.offline);
|
|
19406
19503
|
if (this.config.isLogin()) {
|
|
19407
19504
|
const { sessionId } = this.config.getConfig().userInfo;
|
|
19505
|
+
this.unregister();
|
|
19506
|
+
this.stop();
|
|
19507
|
+
this.socket.gracefulClose();
|
|
19408
19508
|
this.api.loginOut({ sessionId }).catch((err) => {
|
|
19409
19509
|
this.logger.error(err, { errCode: ErrorCode.API_USER_LOGOUT_ERROR });
|
|
19410
19510
|
});
|
|
@@ -19512,6 +19612,12 @@ var WebCall = (() => {
|
|
|
19512
19612
|
await this.user.setUserStatus(UserStatus.offline);
|
|
19513
19613
|
}
|
|
19514
19614
|
}
|
|
19615
|
+
startRTTMonitoring() {
|
|
19616
|
+
this.monitor.startRTTMonitoring();
|
|
19617
|
+
}
|
|
19618
|
+
stopRTTMonitoring() {
|
|
19619
|
+
this.monitor.stopRTTMonitoring();
|
|
19620
|
+
}
|
|
19515
19621
|
on(event, callback) {
|
|
19516
19622
|
this.logger.debug(`on ${event}`);
|
|
19517
19623
|
this.listener.push({
|