quickvo-sdk-js 1.3.2 → 1.4.0

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.
@@ -18,9 +18,20 @@ export interface CallsWebSocketOptions {
18
18
  export declare class CallsWebSocket {
19
19
  #private;
20
20
  prws: PrWebSocket;
21
- state: 'connecting' | 'connected' | 'closed';
21
+ activeTimeStamp: number;
22
22
  constructor(_options?: CallsWebSocketOptions);
23
+ /**
24
+ * fetchUrl
25
+ */
26
+ getUrl: (env?: "local" | "dev" | "prod") => Promise<void>;
27
+ /**
28
+ * afreshSend
29
+ */
30
+ afreshSends: () => void;
23
31
  clearEvents: (sns?: string[]) => void;
32
+ /**
33
+ * checkActivity
34
+ */
24
35
  /**
25
36
  * 连接
26
37
  * @returns
@@ -34,7 +45,7 @@ export declare class CallsWebSocket {
34
45
  * 发送消息
35
46
  * @param message Message
36
47
  */
37
- sendMessage: <T = any>(_message: Message, createEvent?: boolean) => Promise<SendMessageRevolve<T>>;
48
+ sendMessage: <T = any>(_message: Message, onback?: boolean) => Promise<SendMessageRevolve<T>>;
38
49
  /**
39
50
  * 触发广播事件
40
51
  * @param event 事件名称
@@ -1,20 +1,153 @@
1
+ import { K_mediaType } from '../enums/mediaType';
2
+ import { PrResolves } from './PrResolves';
3
+ import { UserTrack } from '../types';
1
4
  export declare class P2P {
2
- peerIns: RTCPeerConnection;
3
- constructor();
5
+ #private;
6
+ prResolves: PrResolves;
7
+ phoneyStreams: Map<K_mediaType, MediaStream>;
8
+ recv_peer_ins: RTCPeerConnection;
9
+ recv_icecandidates: RTCIceCandidate[];
10
+ recv_candidate_collected: boolean;
11
+ recv_transceiverMap: Map<"microphoneCamera_audio" | "microphoneCamera_video" | "screenSharing_video" | "screenSharing_audio", RTCRtpTransceiver>;
12
+ recvPeerNetwork: {
13
+ inboundBytes: number;
14
+ outboundBytes: number;
15
+ lostRate: string;
16
+ roundTripTime: string;
17
+ jitter: string;
18
+ };
19
+ send_peer_ins: RTCPeerConnection;
20
+ send_icecandidates: RTCIceCandidate[];
21
+ send_candidate_collected: boolean;
22
+ send_transceiverMap: Map<"microphoneCamera_audio" | "microphoneCamera_video" | "screenSharing_video" | "screenSharing_audio", RTCRtpTransceiver>;
23
+ sendPeerNetwork: {
24
+ inboundBytes: number;
25
+ outboundBytes: number;
26
+ lostRate: string;
27
+ roundTripTime: string;
28
+ jitter: string;
29
+ };
30
+ tracks: MediaStreamTrack[];
31
+ reports: any[];
32
+ getPeerStatsTimer: number;
33
+ constructor(phoneyStreams: Map<K_mediaType, MediaStream>);
34
+ getPhoneyStreams: (mediaType: K_mediaType) => MediaStream;
4
35
  /**
5
- * initOffer
36
+ * sendIceConnected
6
37
  */
7
- initOffer: () => Promise<unknown>;
38
+ sendIceConnected: () => Promise<unknown>;
8
39
  /**
9
- * initAnswer
40
+ * recvIceConnected
10
41
  */
11
- initAnswer: (offer: RTCSessionDescriptionInit, offer_candidates: RTCIceCandidateInit[]) => Promise<unknown>;
42
+ recvIceConnected: () => Promise<unknown>;
43
+ /**
44
+ * sendCandidateCollected
45
+ */
46
+ sendCandidateCollected: () => Promise<unknown>;
47
+ /**
48
+ * recvCandidateCollected
49
+ */
50
+ recvCandidateCollected: () => Promise<unknown>;
51
+ /**
52
+ * getSendIcecandidates
53
+ */
54
+ getSendIcecandidates: () => Promise<RTCIceCandidate[]>;
55
+ /**
56
+ * getRecvIcecandidates
57
+ */
58
+ getRecvIcecandidates: () => Promise<RTCIceCandidate[]>;
59
+ /**
60
+ * setOffered
61
+ */
62
+ setOffered: () => Promise<unknown>;
63
+ /**
64
+ * initSender
65
+ */
66
+ initSenderPc: () => Promise<void>;
67
+ /**
68
+ * clearSenderPc
69
+ */
70
+ clearSenderPc: () => Promise<void>;
71
+ /**
72
+ * initRecvPc
73
+ */
74
+ initRecvPc: () => Promise<void>;
75
+ /**
76
+ * clearSenderPc
77
+ */
78
+ clearRecvPc: () => Promise<void>;
79
+ /**
80
+ * initSenders
81
+ */
82
+ initSenders: (tracks?: {
83
+ mid: string;
84
+ type: number;
85
+ }[]) => Promise<void>;
86
+ /**
87
+ * addSenders
88
+ */
89
+ addSenders: (mediaTypes?: K_mediaType[]) => Promise<("microphoneCamera_audio" | "microphoneCamera_video" | "screenSharing_video" | "screenSharing_audio")[]>;
90
+ /**
91
+ * addRecvs
92
+ */
93
+ addRecvs: (mediaTypes?: K_mediaType[]) => Promise<("microphoneCamera_audio" | "microphoneCamera_video" | "screenSharing_video" | "screenSharing_audio")[]>;
94
+ /**
95
+ * getSenderTracks
96
+ */
97
+ getSenderTracks: (mediaTypes?: K_mediaType[]) => Promise<UserTrack[]>;
98
+ /**
99
+ * getRecvTracks
100
+ */
101
+ getRecvTracks: (mediaTypes?: K_mediaType[]) => Promise<{
102
+ type: number;
103
+ enabled: boolean;
104
+ trackName: string;
105
+ location: string;
106
+ mid: string | null;
107
+ key: string;
108
+ }[]>;
109
+ /**
110
+ * createOffer
111
+ */
112
+ createOffer: () => Promise<RTCSessionDescriptionInit>;
113
+ /**
114
+ * setOffer
115
+ */
116
+ setOffer: (offer: RTCSessionDescriptionInit) => Promise<void>;
117
+ /**
118
+ * createAnswer
119
+ */
120
+ createAnswer: () => Promise<RTCSessionDescriptionInit>;
121
+ /**
122
+ * addCandidates
123
+ */
124
+ addCandidates: (remote_candidates: RTCIceCandidate[]) => Promise<void>;
12
125
  /**
13
126
  * setAnswer
14
127
  */
15
- setAnswer: (answer: RTCSessionDescriptionInit, answer_candidates: RTCIceCandidateInit[]) => Promise<unknown>;
128
+ setAnswer: (answer: RTCSessionDescriptionInit, answer_candidates: RTCIceCandidateInit[]) => Promise<void>;
129
+ /**
130
+ * getTrack
131
+ */
132
+ getTrack: (mediaType: K_mediaType) => MediaStreamTrack | undefined;
133
+ /**
134
+ * getSendPeerNetwork
135
+ */
136
+ getSendPeerNetwork: () => {
137
+ inboundBytes: number;
138
+ outboundBytes: number;
139
+ lostRate: string;
140
+ roundTripTime: string;
141
+ jitter: string;
142
+ };
16
143
  /**
17
- * close
144
+ * getRecvPeerNetwork
18
145
  */
19
- close: () => void;
146
+ getRecvPeerNetwork: () => {
147
+ inboundBytes: number;
148
+ outboundBytes: number;
149
+ lostRate: string;
150
+ roundTripTime: string;
151
+ jitter: string;
152
+ };
20
153
  }
@@ -0,0 +1,9 @@
1
+ type Resolve = Map<string, Function>;
2
+ export declare class PrResolves {
3
+ resolvesMap: Map<string, Resolve>;
4
+ index: number;
5
+ constructor();
6
+ add: (eventKey: string, checkFun?: Function) => Promise<unknown>;
7
+ emit: (eventKey: string) => Promise<void>;
8
+ }
9
+ export {};
@@ -6,11 +6,14 @@ import { NetworkQualityTester } from './NetworkQualityTester';
6
6
  import { StreamRecorder } from './StreamRecorder';
7
7
  import { PrAsyncQueue } from 'pr-async-queue';
8
8
  import { P2P } from './P2P';
9
+ import { K_iceState } from '../enums/iceState';
10
+ import { PrResolves } from './PrResolves';
9
11
  type Options = QuickOptions & RoomOptions & CallsWebSocketOptions & {
10
12
  earlyId?: string;
11
13
  };
12
14
  export declare class RoomBase {
13
15
  options: Options;
16
+ prResolves: PrResolves;
14
17
  sdk_service_version: string;
15
18
  sdk_session: string;
16
19
  prohibitNotify: boolean;
@@ -18,6 +21,7 @@ export declare class RoomBase {
18
21
  isInRoom: boolean;
19
22
  asyncQueue: PrAsyncQueue;
20
23
  roomState: K_roomState;
24
+ iceState: K_iceState;
21
25
  createAt: number;
22
26
  cwsIns: CallsWebSocket;
23
27
  peerIns: RTCPeerConnection;
@@ -67,6 +71,10 @@ export declare class RoomBase {
67
71
  * setRoomState
68
72
  */
69
73
  setRoomState: (state: K_roomState) => void;
74
+ /**
75
+ * setIceState
76
+ */
77
+ setIceState: (state: K_iceState) => void;
70
78
  /**
71
79
  * setOptions
72
80
  */
@@ -18,7 +18,7 @@ export declare class RoomCalls extends RoomPeer {
18
18
  * @param mediaDeviceKind "audioinput" | "audiooutput" | "videoinput"
19
19
  * @param deviceId string
20
20
  */
21
- setMediaDeviceKind: (mediaDeviceKind: MediaDeviceKind, deviceId: string) => Promise<boolean | Streams>;
21
+ setMediaDeviceKind: (mediaDeviceKind: MediaDeviceKind, deviceId: string) => Promise<unknown>;
22
22
  /**
23
23
  * changeScreenSharing
24
24
  * @param mediaDeviceKind "audioinput" | "audiooutput" | "videoinput"
@@ -126,4 +126,30 @@ export declare class RoomCalls extends RoomPeer {
126
126
  * setSession
127
127
  */
128
128
  setSession: () => void;
129
+ /**
130
+ * wsConnected
131
+ */
132
+ cwsConnected: () => Promise<unknown>;
133
+ p2p: {
134
+ /**
135
+ * open
136
+ */
137
+ open: (remoteUserId: string, mediaTypes?: K_mediaType[]) => Promise<unknown>;
138
+ /**
139
+ * replaceSenderStreams
140
+ */
141
+ replaceSenderStreams: (remoteUserIds: string[], mediaTypes: K_mediaType[] | undefined, isReal: Boolean) => Promise<void>;
142
+ /**
143
+ * reportNetwork
144
+ */
145
+ reportNetwork: () => Promise<unknown>;
146
+ /**
147
+ * reportP2PConnect
148
+ */
149
+ reportP2PConnect: (remoteUserId: string, sendUserId: string, code: 0 | 1 | 2 | 3, reason?: string, pushUserIds?: string[], connectedTime?: number) => Promise<import('..').SendMessageRevolve<any>>;
150
+ /**
151
+ * close
152
+ */
153
+ close: (userId: string, mediaTypes?: K_mediaType[]) => Promise<void>;
154
+ };
129
155
  }
@@ -27,7 +27,7 @@ export declare class RoomMedias extends RoomBase {
27
27
  /**
28
28
  * initUserMediaStreamContext
29
29
  */
30
- initUserMediaStreamContext: (userId: string, mediaType: K_mediaType, stream: MediaStream) => Promise<void>;
30
+ initUserMediaStreamContext: (userId: string, mediaType: K_mediaType, stream: MediaStream, clear: boolean) => Promise<void>;
31
31
  /**
32
32
  * getUserMediaStreamContext
33
33
  */
@@ -6,7 +6,6 @@ export declare class RoomPeer extends RoomUsers {
6
6
  #private;
7
7
  getPeerStatsTimer: number;
8
8
  reports: any[];
9
- candidates: any[];
10
9
  peerNetwork: {
11
10
  inboundBytes: number;
12
11
  outboundBytes: number;
@@ -34,14 +33,7 @@ export declare class RoomPeer extends RoomUsers {
34
33
  /**
35
34
  * getSenderTracks
36
35
  */
37
- getSenderTracks: (mediaTypes?: K_mediaType[]) => Promise<{
38
- type: number;
39
- enabled: boolean;
40
- trackName: string;
41
- location: string;
42
- mid: string | null;
43
- key: string;
44
- }[]>;
36
+ getSenderTracks: (mediaTypes?: K_mediaType[]) => Promise<UserTrack[]>;
45
37
  /**
46
38
  * addSenders
47
39
  */
@@ -50,6 +42,10 @@ export declare class RoomPeer extends RoomUsers {
50
42
  * removeSenders
51
43
  */
52
44
  removeSenders: (mediaTypes?: K_mediaType[]) => Promise<void>;
45
+ /**
46
+ * stopSenders
47
+ */
48
+ stopSenders: (mediaTypes?: K_mediaType[]) => void;
53
49
  /**
54
50
  * onSubscribeUserTracks
55
51
  */
@@ -1,9 +1,10 @@
1
1
  import { K_mediaType } from '../enums/mediaType';
2
2
  import { QuickOptions, RoomUser, UserTrack } from '../types';
3
3
  import { RoomMedias } from './RoomMedias';
4
+ import { P2P } from './P2P';
4
5
  export declare class RoomUsers extends RoomMedias {
5
6
  constructor(options: QuickOptions);
6
- createP2P: () => Promise<void>;
7
+ getP2PIns: (userId: string) => Promise<P2P | undefined>;
7
8
  /**
8
9
  * getMaxVolumeUser
9
10
  */
@@ -147,6 +148,10 @@ export declare class RoomUsers extends RoomMedias {
147
148
  * updateUserPermissions
148
149
  */
149
150
  updateUserPermissions: (userId: string, permissions: number | undefined) => Promise<void>;
151
+ /**
152
+ * updateUserUseP2P
153
+ */
154
+ updateUserUseP2P: (userId: string, useP2P: boolean) => Promise<void>;
150
155
  /**
151
156
  * updateUserBase
152
157
  */
package/dist/types.d.ts CHANGED
@@ -104,6 +104,7 @@ export interface UserTrack {
104
104
  * 唯一key 每次轨道变化均会改变
105
105
  */
106
106
  key: string;
107
+ origin: 'sfu' | 'p2p';
107
108
  }
108
109
  /**
109
110
  * 数据通道
@@ -126,6 +127,7 @@ export type Event = {
126
127
  * 当前事件的发送的消息
127
128
  */
128
129
  message: Message;
130
+ send: Function;
129
131
  /**
130
132
  * 当前事件的成功回调
131
133
  * @param msg 事件完整消息
@@ -248,6 +250,10 @@ export interface RoomUser {
248
250
  updateStreams: {
249
251
  [key in K_mediaType]: boolean;
250
252
  };
253
+ /**
254
+ * 是否使用P2P
255
+ */
256
+ useP2P: boolean;
251
257
  /**
252
258
  * 数据更新时间
253
259
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "quickvo-sdk-js",
3
3
  "description": "提供快捷接入单对单、单对多、群体会议、舞台会议等音视频功能。",
4
- "version": "1.3.2",
4
+ "version": "1.4.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
@@ -22,7 +22,8 @@
22
22
  "pako": "^2.1.0",
23
23
  "pr-async-queue": "^0.1.3",
24
24
  "pr-audio-stream": "^0.1.1",
25
- "pr-tools": "^1.5.7",
25
+ "pr-nat-type": "^0.1.2",
26
+ "pr-tools": "^1.6.0",
26
27
  "pr-ws": "^0.3.2",
27
28
  "sdp-transform": "^2.15.0",
28
29
  "webm-duration-fix": "^1.0.4"