mezon-js 2.9.70 → 2.9.72
Sign up to get free protection for your applications and to get access to all the features.
- package/client.ts +6 -0
- package/dist/client.d.ts +5 -0
- package/dist/mezon-js.cjs.js +30 -99
- package/dist/mezon-js.esm.mjs +30 -99
- package/dist/socket.d.ts +13 -60
- package/dist/web_socket_adapter.d.ts +0 -1
- package/package.json +1 -1
- package/socket.ts +40 -163
- package/web_socket_adapter.ts +0 -3
package/client.ts
CHANGED
@@ -181,6 +181,12 @@ export enum NotificationType {
|
|
181
181
|
NOTHING_MESSAGE = 3,
|
182
182
|
}
|
183
183
|
|
184
|
+
export enum WebrtcSignalingType {
|
185
|
+
WEBRTC_SDP_OFFER = 1,
|
186
|
+
WEBRTC_SDP_ANSWER = 2,
|
187
|
+
WEBRTC_ICE_CANDIDATE = 3
|
188
|
+
}
|
189
|
+
|
184
190
|
/** Response for an RPC function executed on the server. */
|
185
191
|
export interface RpcResponse {
|
186
192
|
/** The identifier of the function. */
|
package/dist/client.d.ts
CHANGED
@@ -40,6 +40,11 @@ export declare enum NotificationType {
|
|
40
40
|
MENTION_MESSAGE = 2,
|
41
41
|
NOTHING_MESSAGE = 3
|
42
42
|
}
|
43
|
+
export declare enum WebrtcSignalingType {
|
44
|
+
WEBRTC_SDP_OFFER = 1,
|
45
|
+
WEBRTC_SDP_ANSWER = 2,
|
46
|
+
WEBRTC_ICE_CANDIDATE = 3
|
47
|
+
}
|
43
48
|
/** Response for an RPC function executed on the server. */
|
44
49
|
export interface RpcResponse {
|
45
50
|
/** The identifier of the function. */
|
package/dist/mezon-js.cjs.js
CHANGED
@@ -60,7 +60,8 @@ __export(mezon_js_exports, {
|
|
60
60
|
DefaultSocket: () => DefaultSocket,
|
61
61
|
NotificationType: () => NotificationType,
|
62
62
|
Session: () => Session,
|
63
|
-
WebSocketAdapterText: () => WebSocketAdapterText
|
63
|
+
WebSocketAdapterText: () => WebSocketAdapterText,
|
64
|
+
WebrtcSignalingType: () => WebrtcSignalingType
|
64
65
|
});
|
65
66
|
module.exports = __toCommonJS(mezon_js_exports);
|
66
67
|
|
@@ -6817,43 +6818,9 @@ var _DefaultSocket = class _DefaultSocket {
|
|
6817
6818
|
} else if (message.token_sent_event) {
|
6818
6819
|
this.ontokensent(message.token_sent_event);
|
6819
6820
|
} else if (message.message_button_clicked) {
|
6820
|
-
this.
|
6821
|
-
|
6822
|
-
);
|
6823
|
-
} else if (message.call_request) {
|
6824
|
-
console.log("message.call_request", message.call_request);
|
6825
|
-
yield this.adapter.getRTCPeerConnection().setRemoteDescription(
|
6826
|
-
new RTCSessionDescription({
|
6827
|
-
type: "offer",
|
6828
|
-
sdp: message.call_request.sdp
|
6829
|
-
})
|
6830
|
-
);
|
6831
|
-
const answer = yield this.adapter.getRTCPeerConnection().createAnswer();
|
6832
|
-
yield this.adapter.getRTCPeerConnection().setLocalDescription(answer);
|
6833
|
-
yield this.sendCallAccept({
|
6834
|
-
sdp: answer.sdp,
|
6835
|
-
type: "answer"
|
6836
|
-
});
|
6837
|
-
this.onCallRequest(message.call_request);
|
6838
|
-
} else if (message.call_accept) {
|
6839
|
-
console.log("message.call_accept", message.call_accept);
|
6840
|
-
yield this.adapter.getRTCPeerConnection().setRemoteDescription(
|
6841
|
-
new RTCSessionDescription({
|
6842
|
-
type: "answer",
|
6843
|
-
sdp: message.call_accept.sdp
|
6844
|
-
})
|
6845
|
-
);
|
6846
|
-
this.onCallAccept(message.call_accept);
|
6847
|
-
} else if (message.ice_candidate_init) {
|
6848
|
-
console.log("message.ice_candidate_init", message.ice_candidate_init);
|
6849
|
-
const rtcIceCandidate = new RTCIceCandidate({
|
6850
|
-
candidate: message.ice_candidate_init.candidate,
|
6851
|
-
sdpMid: message.ice_candidate_init.sdpMid || "audio",
|
6852
|
-
sdpMLineIndex: message.ice_candidate_init.sdpMLineIndex || 0,
|
6853
|
-
usernameFragment: message.ice_candidate_init.usernameFragment || void 0
|
6854
|
-
});
|
6855
|
-
yield this.adapter.getRTCPeerConnection().addIceCandidate(rtcIceCandidate);
|
6856
|
-
this.onIceCandidateInit(message.ice_candidate_init);
|
6821
|
+
this.onmessagebuttonclicked(message.message_button_clicked);
|
6822
|
+
} else if (message.webrtc_signaling_fwd) {
|
6823
|
+
this.onwebrtcsignalingfwd(message.webrtc_signaling_fwd);
|
6857
6824
|
} else {
|
6858
6825
|
if (this.verbose && window && window.console) {
|
6859
6826
|
console.log("Unrecognized message received: %o", message);
|
@@ -7131,24 +7098,14 @@ var _DefaultSocket = class _DefaultSocket {
|
|
7131
7098
|
console.log(tokenSentEvent);
|
7132
7099
|
}
|
7133
7100
|
}
|
7134
|
-
|
7101
|
+
onmessagebuttonclicked(messageButtonClicked) {
|
7135
7102
|
if (this.verbose && window && window.console) {
|
7136
7103
|
console.log(messageButtonClicked);
|
7137
7104
|
}
|
7138
7105
|
}
|
7139
|
-
|
7140
|
-
if (this.verbose && window && window.console) {
|
7141
|
-
console.log(callRequest);
|
7142
|
-
}
|
7143
|
-
}
|
7144
|
-
onCallAccept(callAccept) {
|
7145
|
-
if (this.verbose && window && window.console) {
|
7146
|
-
console.log(callAccept);
|
7147
|
-
}
|
7148
|
-
}
|
7149
|
-
onIceCandidateInit(iceCandidateInit) {
|
7106
|
+
onwebrtcsignalingfwd(event) {
|
7150
7107
|
if (this.verbose && window && window.console) {
|
7151
|
-
console.log(
|
7108
|
+
console.log(event);
|
7152
7109
|
}
|
7153
7110
|
}
|
7154
7111
|
send(message, sendTimeout = _DefaultSocket.DefaultSendTimeoutMs) {
|
@@ -7176,54 +7133,6 @@ var _DefaultSocket = class _DefaultSocket {
|
|
7176
7133
|
}
|
7177
7134
|
});
|
7178
7135
|
}
|
7179
|
-
getRTCPeerConnection() {
|
7180
|
-
return this.adapter.getRTCPeerConnection();
|
7181
|
-
}
|
7182
|
-
startCall(localVideoRef, remoteVideoRef, grant_permissions) {
|
7183
|
-
return __async(this, null, function* () {
|
7184
|
-
this.adapter.getRTCPeerConnection().onicecandidate = (event) => {
|
7185
|
-
if (event && event.candidate) {
|
7186
|
-
this.sendICECandidateInit({ candidate: event == null ? void 0 : event.candidate });
|
7187
|
-
}
|
7188
|
-
};
|
7189
|
-
this.adapter.getRTCPeerConnection().ontrack = (event) => {
|
7190
|
-
if (remoteVideoRef) {
|
7191
|
-
remoteVideoRef.srcObject = event.streams[0];
|
7192
|
-
}
|
7193
|
-
};
|
7194
|
-
const stream = yield navigator.mediaDevices.getUserMedia(grant_permissions);
|
7195
|
-
if (localVideoRef) {
|
7196
|
-
localVideoRef.srcObject = stream;
|
7197
|
-
}
|
7198
|
-
stream.getTracks().forEach(
|
7199
|
-
(track) => {
|
7200
|
-
var _a;
|
7201
|
-
return (_a = this.adapter.getRTCPeerConnection()) == null ? void 0 : _a.addTrack(track, stream);
|
7202
|
-
}
|
7203
|
-
);
|
7204
|
-
const offer = yield this.adapter.getRTCPeerConnection().createOffer();
|
7205
|
-
yield this.adapter.getRTCPeerConnection().setLocalDescription(offer);
|
7206
|
-
yield this.sendCallRequest({
|
7207
|
-
sdp: offer == null ? void 0 : offer.sdp,
|
7208
|
-
type: "offer"
|
7209
|
-
});
|
7210
|
-
});
|
7211
|
-
}
|
7212
|
-
sendCallRequest(req) {
|
7213
|
-
return __async(this, null, function* () {
|
7214
|
-
return yield this.send({ call_request: req });
|
7215
|
-
});
|
7216
|
-
}
|
7217
|
-
sendCallAccept(req) {
|
7218
|
-
return __async(this, null, function* () {
|
7219
|
-
return yield this.send({ call_accept: req });
|
7220
|
-
});
|
7221
|
-
}
|
7222
|
-
sendICECandidateInit(req) {
|
7223
|
-
return __async(this, null, function* () {
|
7224
|
-
return yield this.send({ ice_candidate_init: req });
|
7225
|
-
});
|
7226
|
-
}
|
7227
7136
|
followUsers(userIds) {
|
7228
7137
|
return __async(this, null, function* () {
|
7229
7138
|
const response = yield this.send({ status_follow: { user_ids: userIds } });
|
@@ -7445,6 +7354,22 @@ var _DefaultSocket = class _DefaultSocket {
|
|
7445
7354
|
return response.check_name_existed_event;
|
7446
7355
|
});
|
7447
7356
|
}
|
7357
|
+
forwardWebrtcSignaling(receiver_id, data_type, json_data) {
|
7358
|
+
return __async(this, null, function* () {
|
7359
|
+
const response = yield this.send({
|
7360
|
+
webrtc_signaling_fwd: { receiver_id, data_type, json_data }
|
7361
|
+
});
|
7362
|
+
return response.webrtc_signaling_fwd;
|
7363
|
+
});
|
7364
|
+
}
|
7365
|
+
handleMessageButtonClick(message_id, channel_id, button_id, sender_id, user_id) {
|
7366
|
+
return __async(this, null, function* () {
|
7367
|
+
const response = yield this.send({
|
7368
|
+
message_button_clicked: { message_id, channel_id, button_id, sender_id, user_id }
|
7369
|
+
});
|
7370
|
+
return response.webrtc_signaling_fwd;
|
7371
|
+
});
|
7372
|
+
}
|
7448
7373
|
pingPong() {
|
7449
7374
|
return __async(this, null, function* () {
|
7450
7375
|
if (!this.adapter.isOpen()) {
|
@@ -7503,6 +7428,12 @@ var NotificationType = /* @__PURE__ */ ((NotificationType2) => {
|
|
7503
7428
|
NotificationType2[NotificationType2["NOTHING_MESSAGE"] = 3] = "NOTHING_MESSAGE";
|
7504
7429
|
return NotificationType2;
|
7505
7430
|
})(NotificationType || {});
|
7431
|
+
var WebrtcSignalingType = /* @__PURE__ */ ((WebrtcSignalingType2) => {
|
7432
|
+
WebrtcSignalingType2[WebrtcSignalingType2["WEBRTC_SDP_OFFER"] = 1] = "WEBRTC_SDP_OFFER";
|
7433
|
+
WebrtcSignalingType2[WebrtcSignalingType2["WEBRTC_SDP_ANSWER"] = 2] = "WEBRTC_SDP_ANSWER";
|
7434
|
+
WebrtcSignalingType2[WebrtcSignalingType2["WEBRTC_ICE_CANDIDATE"] = 3] = "WEBRTC_ICE_CANDIDATE";
|
7435
|
+
return WebrtcSignalingType2;
|
7436
|
+
})(WebrtcSignalingType || {});
|
7506
7437
|
var Client = class {
|
7507
7438
|
constructor(serverkey = DEFAULT_SERVER_KEY, host = DEFAULT_HOST, port = DEFAULT_PORT, useSSL = false, timeout = DEFAULT_TIMEOUT_MS, autoRefreshSession = true) {
|
7508
7439
|
this.serverkey = serverkey;
|
package/dist/mezon-js.esm.mjs
CHANGED
@@ -6788,43 +6788,9 @@ var _DefaultSocket = class _DefaultSocket {
|
|
6788
6788
|
} else if (message.token_sent_event) {
|
6789
6789
|
this.ontokensent(message.token_sent_event);
|
6790
6790
|
} else if (message.message_button_clicked) {
|
6791
|
-
this.
|
6792
|
-
|
6793
|
-
);
|
6794
|
-
} else if (message.call_request) {
|
6795
|
-
console.log("message.call_request", message.call_request);
|
6796
|
-
yield this.adapter.getRTCPeerConnection().setRemoteDescription(
|
6797
|
-
new RTCSessionDescription({
|
6798
|
-
type: "offer",
|
6799
|
-
sdp: message.call_request.sdp
|
6800
|
-
})
|
6801
|
-
);
|
6802
|
-
const answer = yield this.adapter.getRTCPeerConnection().createAnswer();
|
6803
|
-
yield this.adapter.getRTCPeerConnection().setLocalDescription(answer);
|
6804
|
-
yield this.sendCallAccept({
|
6805
|
-
sdp: answer.sdp,
|
6806
|
-
type: "answer"
|
6807
|
-
});
|
6808
|
-
this.onCallRequest(message.call_request);
|
6809
|
-
} else if (message.call_accept) {
|
6810
|
-
console.log("message.call_accept", message.call_accept);
|
6811
|
-
yield this.adapter.getRTCPeerConnection().setRemoteDescription(
|
6812
|
-
new RTCSessionDescription({
|
6813
|
-
type: "answer",
|
6814
|
-
sdp: message.call_accept.sdp
|
6815
|
-
})
|
6816
|
-
);
|
6817
|
-
this.onCallAccept(message.call_accept);
|
6818
|
-
} else if (message.ice_candidate_init) {
|
6819
|
-
console.log("message.ice_candidate_init", message.ice_candidate_init);
|
6820
|
-
const rtcIceCandidate = new RTCIceCandidate({
|
6821
|
-
candidate: message.ice_candidate_init.candidate,
|
6822
|
-
sdpMid: message.ice_candidate_init.sdpMid || "audio",
|
6823
|
-
sdpMLineIndex: message.ice_candidate_init.sdpMLineIndex || 0,
|
6824
|
-
usernameFragment: message.ice_candidate_init.usernameFragment || void 0
|
6825
|
-
});
|
6826
|
-
yield this.adapter.getRTCPeerConnection().addIceCandidate(rtcIceCandidate);
|
6827
|
-
this.onIceCandidateInit(message.ice_candidate_init);
|
6791
|
+
this.onmessagebuttonclicked(message.message_button_clicked);
|
6792
|
+
} else if (message.webrtc_signaling_fwd) {
|
6793
|
+
this.onwebrtcsignalingfwd(message.webrtc_signaling_fwd);
|
6828
6794
|
} else {
|
6829
6795
|
if (this.verbose && window && window.console) {
|
6830
6796
|
console.log("Unrecognized message received: %o", message);
|
@@ -7102,24 +7068,14 @@ var _DefaultSocket = class _DefaultSocket {
|
|
7102
7068
|
console.log(tokenSentEvent);
|
7103
7069
|
}
|
7104
7070
|
}
|
7105
|
-
|
7071
|
+
onmessagebuttonclicked(messageButtonClicked) {
|
7106
7072
|
if (this.verbose && window && window.console) {
|
7107
7073
|
console.log(messageButtonClicked);
|
7108
7074
|
}
|
7109
7075
|
}
|
7110
|
-
|
7111
|
-
if (this.verbose && window && window.console) {
|
7112
|
-
console.log(callRequest);
|
7113
|
-
}
|
7114
|
-
}
|
7115
|
-
onCallAccept(callAccept) {
|
7116
|
-
if (this.verbose && window && window.console) {
|
7117
|
-
console.log(callAccept);
|
7118
|
-
}
|
7119
|
-
}
|
7120
|
-
onIceCandidateInit(iceCandidateInit) {
|
7076
|
+
onwebrtcsignalingfwd(event) {
|
7121
7077
|
if (this.verbose && window && window.console) {
|
7122
|
-
console.log(
|
7078
|
+
console.log(event);
|
7123
7079
|
}
|
7124
7080
|
}
|
7125
7081
|
send(message, sendTimeout = _DefaultSocket.DefaultSendTimeoutMs) {
|
@@ -7147,54 +7103,6 @@ var _DefaultSocket = class _DefaultSocket {
|
|
7147
7103
|
}
|
7148
7104
|
});
|
7149
7105
|
}
|
7150
|
-
getRTCPeerConnection() {
|
7151
|
-
return this.adapter.getRTCPeerConnection();
|
7152
|
-
}
|
7153
|
-
startCall(localVideoRef, remoteVideoRef, grant_permissions) {
|
7154
|
-
return __async(this, null, function* () {
|
7155
|
-
this.adapter.getRTCPeerConnection().onicecandidate = (event) => {
|
7156
|
-
if (event && event.candidate) {
|
7157
|
-
this.sendICECandidateInit({ candidate: event == null ? void 0 : event.candidate });
|
7158
|
-
}
|
7159
|
-
};
|
7160
|
-
this.adapter.getRTCPeerConnection().ontrack = (event) => {
|
7161
|
-
if (remoteVideoRef) {
|
7162
|
-
remoteVideoRef.srcObject = event.streams[0];
|
7163
|
-
}
|
7164
|
-
};
|
7165
|
-
const stream = yield navigator.mediaDevices.getUserMedia(grant_permissions);
|
7166
|
-
if (localVideoRef) {
|
7167
|
-
localVideoRef.srcObject = stream;
|
7168
|
-
}
|
7169
|
-
stream.getTracks().forEach(
|
7170
|
-
(track) => {
|
7171
|
-
var _a;
|
7172
|
-
return (_a = this.adapter.getRTCPeerConnection()) == null ? void 0 : _a.addTrack(track, stream);
|
7173
|
-
}
|
7174
|
-
);
|
7175
|
-
const offer = yield this.adapter.getRTCPeerConnection().createOffer();
|
7176
|
-
yield this.adapter.getRTCPeerConnection().setLocalDescription(offer);
|
7177
|
-
yield this.sendCallRequest({
|
7178
|
-
sdp: offer == null ? void 0 : offer.sdp,
|
7179
|
-
type: "offer"
|
7180
|
-
});
|
7181
|
-
});
|
7182
|
-
}
|
7183
|
-
sendCallRequest(req) {
|
7184
|
-
return __async(this, null, function* () {
|
7185
|
-
return yield this.send({ call_request: req });
|
7186
|
-
});
|
7187
|
-
}
|
7188
|
-
sendCallAccept(req) {
|
7189
|
-
return __async(this, null, function* () {
|
7190
|
-
return yield this.send({ call_accept: req });
|
7191
|
-
});
|
7192
|
-
}
|
7193
|
-
sendICECandidateInit(req) {
|
7194
|
-
return __async(this, null, function* () {
|
7195
|
-
return yield this.send({ ice_candidate_init: req });
|
7196
|
-
});
|
7197
|
-
}
|
7198
7106
|
followUsers(userIds) {
|
7199
7107
|
return __async(this, null, function* () {
|
7200
7108
|
const response = yield this.send({ status_follow: { user_ids: userIds } });
|
@@ -7416,6 +7324,22 @@ var _DefaultSocket = class _DefaultSocket {
|
|
7416
7324
|
return response.check_name_existed_event;
|
7417
7325
|
});
|
7418
7326
|
}
|
7327
|
+
forwardWebrtcSignaling(receiver_id, data_type, json_data) {
|
7328
|
+
return __async(this, null, function* () {
|
7329
|
+
const response = yield this.send({
|
7330
|
+
webrtc_signaling_fwd: { receiver_id, data_type, json_data }
|
7331
|
+
});
|
7332
|
+
return response.webrtc_signaling_fwd;
|
7333
|
+
});
|
7334
|
+
}
|
7335
|
+
handleMessageButtonClick(message_id, channel_id, button_id, sender_id, user_id) {
|
7336
|
+
return __async(this, null, function* () {
|
7337
|
+
const response = yield this.send({
|
7338
|
+
message_button_clicked: { message_id, channel_id, button_id, sender_id, user_id }
|
7339
|
+
});
|
7340
|
+
return response.webrtc_signaling_fwd;
|
7341
|
+
});
|
7342
|
+
}
|
7419
7343
|
pingPong() {
|
7420
7344
|
return __async(this, null, function* () {
|
7421
7345
|
if (!this.adapter.isOpen()) {
|
@@ -7474,6 +7398,12 @@ var NotificationType = /* @__PURE__ */ ((NotificationType2) => {
|
|
7474
7398
|
NotificationType2[NotificationType2["NOTHING_MESSAGE"] = 3] = "NOTHING_MESSAGE";
|
7475
7399
|
return NotificationType2;
|
7476
7400
|
})(NotificationType || {});
|
7401
|
+
var WebrtcSignalingType = /* @__PURE__ */ ((WebrtcSignalingType2) => {
|
7402
|
+
WebrtcSignalingType2[WebrtcSignalingType2["WEBRTC_SDP_OFFER"] = 1] = "WEBRTC_SDP_OFFER";
|
7403
|
+
WebrtcSignalingType2[WebrtcSignalingType2["WEBRTC_SDP_ANSWER"] = 2] = "WEBRTC_SDP_ANSWER";
|
7404
|
+
WebrtcSignalingType2[WebrtcSignalingType2["WEBRTC_ICE_CANDIDATE"] = 3] = "WEBRTC_ICE_CANDIDATE";
|
7405
|
+
return WebrtcSignalingType2;
|
7406
|
+
})(WebrtcSignalingType || {});
|
7477
7407
|
var Client = class {
|
7478
7408
|
constructor(serverkey = DEFAULT_SERVER_KEY, host = DEFAULT_HOST, port = DEFAULT_PORT, useSSL = false, timeout = DEFAULT_TIMEOUT_MS, autoRefreshSession = true) {
|
7479
7409
|
this.serverkey = serverkey;
|
@@ -9860,5 +9790,6 @@ export {
|
|
9860
9790
|
DefaultSocket,
|
9861
9791
|
NotificationType,
|
9862
9792
|
Session,
|
9863
|
-
WebSocketAdapterText
|
9793
|
+
WebSocketAdapterText,
|
9794
|
+
WebrtcSignalingType
|
9864
9795
|
};
|
package/dist/socket.d.ts
CHANGED
@@ -584,19 +584,10 @@ export interface MessageButtonClicked {
|
|
584
584
|
sender_id: string;
|
585
585
|
user_id: string;
|
586
586
|
}
|
587
|
-
export interface
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
export interface CallAccept {
|
592
|
-
type: string;
|
593
|
-
sdp: string;
|
594
|
-
}
|
595
|
-
export interface ICECandidateInit {
|
596
|
-
candidate: string;
|
597
|
-
sdpMid: string | undefined;
|
598
|
-
sdpMLineIndex: number | undefined;
|
599
|
-
usernameFragment: string | undefined;
|
587
|
+
export interface WebrtcSignalingFwd {
|
588
|
+
receiverId: string;
|
589
|
+
dataType: number;
|
590
|
+
jsonData: string;
|
600
591
|
}
|
601
592
|
/** A socket connection to Mezon server. */
|
602
593
|
export interface Socket {
|
@@ -604,7 +595,6 @@ export interface Socket {
|
|
604
595
|
isOpen(): boolean;
|
605
596
|
/** Connect to the server. */
|
606
597
|
connect(session: Session, createStatus: boolean, platform: string, connectTimeoutMs?: number, signal?: AbortSignal): Promise<Session>;
|
607
|
-
getRTCPeerConnection(): RTCPeerConnection;
|
608
598
|
/** Disconnect from the server. */
|
609
599
|
disconnect(fireDisconnectEvent: boolean): void;
|
610
600
|
/** Subscribe to one or more users for their status updates. */
|
@@ -699,10 +689,10 @@ export interface Socket {
|
|
699
689
|
setHeartbeatTimeoutMs(ms: number): void;
|
700
690
|
getHeartbeatTimeoutMs(): number;
|
701
691
|
checkDuplicateName(name: string, condition_id: string, type: number): Promise<CheckNameExistedEvent>;
|
702
|
-
handleMessageButtonClick: (
|
703
|
-
|
704
|
-
|
705
|
-
|
692
|
+
handleMessageButtonClick: (message_id: string, channel_id: string, button_id: string, sender_id: string, user_id: string) => Promise<MessageButtonClicked>;
|
693
|
+
onmessagebuttonclicked: (event: MessageButtonClicked) => void;
|
694
|
+
forwardWebrtcSignaling: (receiverId: string, dataType: number, jsonData: string) => Promise<WebrtcSignalingFwd>;
|
695
|
+
onwebrtcsignalingfwd: (event: WebrtcSignalingFwd) => void;
|
706
696
|
oneventcreated: (clan_event_created: ApiCreateEventRequest) => void;
|
707
697
|
oncoffeegiven: (give_coffee_event: ApiGiveCoffeeEvent) => void;
|
708
698
|
oneventemoji: (event_emoji: EventEmoji) => void;
|
@@ -715,24 +705,6 @@ export interface Socket {
|
|
715
705
|
onpermissionchanged: (permission_changed_event: PermissionChangedEvent) => void;
|
716
706
|
onunmuteevent: (unmute_event: UnmuteEvent) => void;
|
717
707
|
ontokensent: (token: ApiTokenSentEvent) => void;
|
718
|
-
sendCallRequest(req: {
|
719
|
-
type: string;
|
720
|
-
sdp: string;
|
721
|
-
}): Promise<void>;
|
722
|
-
sendCallAccept(req: {
|
723
|
-
type: string;
|
724
|
-
sdp: string;
|
725
|
-
}): Promise<void>;
|
726
|
-
sendICECandidateInit(req: {
|
727
|
-
candidate: string;
|
728
|
-
sdpMid: string | undefined;
|
729
|
-
sdpMLineIndex: number | undefined;
|
730
|
-
usernameFragment: string | undefined;
|
731
|
-
}): Promise<void>;
|
732
|
-
startCall(localVideoRef: any, remoteVideoRef: any, grant_permissions: {
|
733
|
-
video: boolean;
|
734
|
-
audio: boolean;
|
735
|
-
}): Promise<void>;
|
736
708
|
}
|
737
709
|
/** Reports an error received from a socket message. */
|
738
710
|
export interface SocketError {
|
@@ -807,30 +779,9 @@ export declare class DefaultSocket implements Socket {
|
|
807
779
|
onpermissionchanged(permission_changed_event: PermissionChangedEvent): void;
|
808
780
|
onunmuteevent(unmute_event: UnmuteEvent): void;
|
809
781
|
ontokensent(tokenSentEvent: ApiTokenSentEvent): void;
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
onIceCandidateInit(iceCandidateInit: ICECandidateInit): void;
|
814
|
-
send(message: ChannelJoin | ChannelLeave | ChannelMessageSend | ChannelMessageUpdate | CustomStatusEvent | ChannelMessageRemove | MessageTypingEvent | LastSeenMessageEvent | Rpc | StatusFollow | StatusUnfollow | StatusUpdate | Ping | CallRequest | CallAccept | ICECandidateInit, sendTimeout?: number): Promise<any>;
|
815
|
-
getRTCPeerConnection(): RTCPeerConnection;
|
816
|
-
startCall(localVideoRef: any, remoteVideoRef: any, grant_permissions: {
|
817
|
-
video: boolean;
|
818
|
-
audio: boolean;
|
819
|
-
}): Promise<void>;
|
820
|
-
sendCallRequest(req: {
|
821
|
-
type: string;
|
822
|
-
sdp?: string;
|
823
|
-
}): Promise<void>;
|
824
|
-
sendCallAccept(req: {
|
825
|
-
type: string;
|
826
|
-
sdp?: string;
|
827
|
-
}): Promise<void>;
|
828
|
-
sendICECandidateInit(req: {
|
829
|
-
candidate: string;
|
830
|
-
sdpMid?: string | undefined;
|
831
|
-
sdpMLineIndex?: number | undefined;
|
832
|
-
usernameFragment?: string | undefined;
|
833
|
-
}): Promise<void>;
|
782
|
+
onmessagebuttonclicked(messageButtonClicked: MessageButtonClicked): void;
|
783
|
+
onwebrtcsignalingfwd(event: WebrtcSignalingFwd): void;
|
784
|
+
send(message: ChannelJoin | ChannelLeave | ChannelMessageSend | ChannelMessageUpdate | CustomStatusEvent | ChannelMessageRemove | MessageTypingEvent | LastSeenMessageEvent | Rpc | StatusFollow | StatusUnfollow | StatusUpdate | Ping | WebrtcSignalingFwd | MessageButtonClicked, sendTimeout?: number): Promise<any>;
|
834
785
|
followUsers(userIds: string[]): Promise<Status>;
|
835
786
|
joinClanChat(clan_id: string): Promise<ClanJoin>;
|
836
787
|
joinChat(clan_id: string, channel_id: string, channel_type: number, is_public: boolean): Promise<Channel>;
|
@@ -849,6 +800,8 @@ export declare class DefaultSocket implements Socket {
|
|
849
800
|
writeVoiceLeaved(id: string, clanId: string, voiceChannelId: string, voiceUserId: string): Promise<VoiceLeavedEvent>;
|
850
801
|
writeCustomStatus(clan_id: string, status: string): Promise<CustomStatusEvent>;
|
851
802
|
checkDuplicateName(name: string, condition_id: string, type: number): Promise<CheckNameExistedEvent>;
|
803
|
+
forwardWebrtcSignaling(receiver_id: string, data_type: number, json_data: string): Promise<WebrtcSignalingFwd>;
|
804
|
+
handleMessageButtonClick(message_id: string, channel_id: string, button_id: string, sender_id: string, user_id: string): Promise<MessageButtonClicked>;
|
852
805
|
private pingPong;
|
853
806
|
}
|
854
807
|
export {};
|
@@ -37,7 +37,6 @@ export interface WebSocketAdapter {
|
|
37
37
|
close(): void;
|
38
38
|
connect(scheme: string, host: string, port: string, createStatus: boolean, token: string, platform: string, signal?: AbortSignal): void;
|
39
39
|
send(message: any): void;
|
40
|
-
getRTCPeerConnection(): RTCPeerConnection;
|
41
40
|
}
|
42
41
|
/**
|
43
42
|
* SocketCloseHandler defines a lambda that handles WebSocket close events.
|
package/package.json
CHANGED
package/socket.ts
CHANGED
@@ -827,21 +827,10 @@ export interface MessageButtonClicked {
|
|
827
827
|
user_id: string;
|
828
828
|
}
|
829
829
|
|
830
|
-
export interface
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
export interface CallAccept {
|
836
|
-
type: string;
|
837
|
-
sdp: string;
|
838
|
-
}
|
839
|
-
|
840
|
-
export interface ICECandidateInit {
|
841
|
-
candidate: string;
|
842
|
-
sdpMid: string | undefined;
|
843
|
-
sdpMLineIndex: number | undefined;
|
844
|
-
usernameFragment: string | undefined;
|
830
|
+
export interface WebrtcSignalingFwd {
|
831
|
+
receiverId: string;
|
832
|
+
dataType: number;
|
833
|
+
jsonData: string;
|
845
834
|
}
|
846
835
|
|
847
836
|
/** A socket connection to Mezon server. */
|
@@ -858,8 +847,6 @@ export interface Socket {
|
|
858
847
|
signal?: AbortSignal
|
859
848
|
): Promise<Session>;
|
860
849
|
|
861
|
-
getRTCPeerConnection(): RTCPeerConnection;
|
862
|
-
|
863
850
|
/** Disconnect from the server. */
|
864
851
|
disconnect(fireDisconnectEvent: boolean): void;
|
865
852
|
|
@@ -1113,15 +1100,17 @@ export interface Socket {
|
|
1113
1100
|
type: number
|
1114
1101
|
): Promise<CheckNameExistedEvent>;
|
1115
1102
|
|
1116
|
-
handleMessageButtonClick: (
|
1117
|
-
|
1118
|
-
|
1103
|
+
handleMessageButtonClick: (message_id: string,
|
1104
|
+
channel_id: string,
|
1105
|
+
button_id: string,
|
1106
|
+
sender_id: string,
|
1107
|
+
user_id: string) => Promise<MessageButtonClicked>;
|
1119
1108
|
|
1120
|
-
|
1109
|
+
onmessagebuttonclicked: (event: MessageButtonClicked) => void;
|
1121
1110
|
|
1122
|
-
|
1111
|
+
forwardWebrtcSignaling: (receiverId: string, dataType: number, jsonData: string) => Promise<WebrtcSignalingFwd>;
|
1123
1112
|
|
1124
|
-
|
1113
|
+
onwebrtcsignalingfwd: (event: WebrtcSignalingFwd) => void;
|
1125
1114
|
|
1126
1115
|
oneventcreated: (clan_event_created: ApiCreateEventRequest) => void;
|
1127
1116
|
|
@@ -1153,21 +1142,7 @@ export interface Socket {
|
|
1153
1142
|
|
1154
1143
|
onunmuteevent: (unmute_event: UnmuteEvent) => void;
|
1155
1144
|
|
1156
|
-
ontokensent: (token: ApiTokenSentEvent) => void;
|
1157
|
-
|
1158
|
-
sendCallRequest(req: { type: string; sdp: string }): Promise<void>;
|
1159
|
-
sendCallAccept(req: { type: string; sdp: string }): Promise<void>;
|
1160
|
-
sendICECandidateInit(req: {
|
1161
|
-
candidate: string;
|
1162
|
-
sdpMid: string | undefined;
|
1163
|
-
sdpMLineIndex: number | undefined;
|
1164
|
-
usernameFragment: string | undefined;
|
1165
|
-
}): Promise<void>;
|
1166
|
-
startCall(
|
1167
|
-
localVideoRef: any,
|
1168
|
-
remoteVideoRef: any,
|
1169
|
-
grant_permissions: { video: boolean; audio: boolean }
|
1170
|
-
): Promise<void>;
|
1145
|
+
ontokensent: (token: ApiTokenSentEvent) => void;
|
1171
1146
|
}
|
1172
1147
|
|
1173
1148
|
/** Reports an error received from a socket message. */
|
@@ -1420,53 +1395,9 @@ export class DefaultSocket implements Socket {
|
|
1420
1395
|
} else if (message.token_sent_event) {
|
1421
1396
|
this.ontokensent(<ApiTokenSentEvent>message.token_sent_event);
|
1422
1397
|
} else if (message.message_button_clicked) {
|
1423
|
-
this.
|
1424
|
-
|
1425
|
-
);
|
1426
|
-
} else if (message.call_request) {
|
1427
|
-
console.log("message.call_request", message.call_request);
|
1428
|
-
await this.adapter.getRTCPeerConnection().setRemoteDescription(
|
1429
|
-
new RTCSessionDescription({
|
1430
|
-
type: "offer",
|
1431
|
-
sdp: message.call_request.sdp,
|
1432
|
-
})
|
1433
|
-
);
|
1434
|
-
const answer = await this.adapter
|
1435
|
-
.getRTCPeerConnection()
|
1436
|
-
.createAnswer();
|
1437
|
-
await this.adapter.getRTCPeerConnection().setLocalDescription(answer);
|
1438
|
-
// Check if WebSocket is initialized before sending message
|
1439
|
-
await this.sendCallAccept({
|
1440
|
-
sdp: answer.sdp,
|
1441
|
-
type: "answer",
|
1442
|
-
});
|
1443
|
-
|
1444
|
-
this.onCallRequest(<CallRequest>message.call_request);
|
1445
|
-
} else if (message.call_accept) {
|
1446
|
-
console.log("message.call_accept", message.call_accept);
|
1447
|
-
await this.adapter.getRTCPeerConnection().setRemoteDescription(
|
1448
|
-
new RTCSessionDescription({
|
1449
|
-
type: "answer",
|
1450
|
-
sdp: message.call_accept.sdp,
|
1451
|
-
})
|
1452
|
-
);
|
1453
|
-
|
1454
|
-
this.onCallAccept(<CallAccept>message.call_accept);
|
1455
|
-
} else if (message.ice_candidate_init) {
|
1456
|
-
console.log("message.ice_candidate_init", message.ice_candidate_init);
|
1457
|
-
const rtcIceCandidate = new RTCIceCandidate({
|
1458
|
-
candidate: message.ice_candidate_init.candidate,
|
1459
|
-
sdpMid: message.ice_candidate_init.sdpMid || "audio",
|
1460
|
-
sdpMLineIndex: message.ice_candidate_init.sdpMLineIndex || 0,
|
1461
|
-
usernameFragment:
|
1462
|
-
message.ice_candidate_init.usernameFragment || undefined,
|
1463
|
-
});
|
1464
|
-
|
1465
|
-
await this.adapter
|
1466
|
-
.getRTCPeerConnection()
|
1467
|
-
.addIceCandidate(rtcIceCandidate);
|
1468
|
-
|
1469
|
-
this.onIceCandidateInit(<ICECandidateInit>message.ice_candidate_init);
|
1398
|
+
this.onmessagebuttonclicked( <MessageButtonClicked>message.message_button_clicked);
|
1399
|
+
} else if (message.webrtc_signaling_fwd) {
|
1400
|
+
this.onwebrtcsignalingfwd(<WebrtcSignalingFwd>message.webrtc_signaling_fwd);
|
1470
1401
|
} else {
|
1471
1402
|
if (this.verbose && window && window.console) {
|
1472
1403
|
console.log("Unrecognized message received: %o", message);
|
@@ -1798,27 +1729,15 @@ export class DefaultSocket implements Socket {
|
|
1798
1729
|
}
|
1799
1730
|
}
|
1800
1731
|
|
1801
|
-
|
1732
|
+
onmessagebuttonclicked(messageButtonClicked: MessageButtonClicked) {
|
1802
1733
|
if (this.verbose && window && window.console) {
|
1803
1734
|
console.log(messageButtonClicked);
|
1804
1735
|
}
|
1805
1736
|
}
|
1806
1737
|
|
1807
|
-
|
1808
|
-
if (this.verbose && window && window.console) {
|
1809
|
-
console.log(callRequest);
|
1810
|
-
}
|
1811
|
-
}
|
1812
|
-
|
1813
|
-
onCallAccept(callAccept: CallAccept) {
|
1738
|
+
onwebrtcsignalingfwd(event: WebrtcSignalingFwd) {
|
1814
1739
|
if (this.verbose && window && window.console) {
|
1815
|
-
console.log(
|
1816
|
-
}
|
1817
|
-
}
|
1818
|
-
|
1819
|
-
onIceCandidateInit(iceCandidateInit: ICECandidateInit) {
|
1820
|
-
if (this.verbose && window && window.console) {
|
1821
|
-
console.log(iceCandidateInit);
|
1740
|
+
console.log(event);
|
1822
1741
|
}
|
1823
1742
|
}
|
1824
1743
|
|
@@ -1837,9 +1756,8 @@ export class DefaultSocket implements Socket {
|
|
1837
1756
|
| StatusUnfollow
|
1838
1757
|
| StatusUpdate
|
1839
1758
|
| Ping
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
| ICECandidateInit,
|
1759
|
+
| WebrtcSignalingFwd
|
1760
|
+
| MessageButtonClicked,
|
1843
1761
|
sendTimeout = DefaultSocket.DefaultSendTimeoutMs
|
1844
1762
|
): Promise<any> {
|
1845
1763
|
const untypedMessage = message as any;
|
@@ -1871,66 +1789,6 @@ export class DefaultSocket implements Socket {
|
|
1871
1789
|
});
|
1872
1790
|
}
|
1873
1791
|
|
1874
|
-
getRTCPeerConnection(): RTCPeerConnection {
|
1875
|
-
return this.adapter.getRTCPeerConnection();
|
1876
|
-
}
|
1877
|
-
|
1878
|
-
async startCall(
|
1879
|
-
localVideoRef: any,
|
1880
|
-
remoteVideoRef: any,
|
1881
|
-
grant_permissions: { video: boolean; audio: boolean }
|
1882
|
-
): Promise<void> {
|
1883
|
-
// setup peer connection
|
1884
|
-
this.adapter.getRTCPeerConnection().onicecandidate = (event: any) => {
|
1885
|
-
if (event && event.candidate) {
|
1886
|
-
this.sendICECandidateInit({ candidate: event?.candidate });
|
1887
|
-
}
|
1888
|
-
};
|
1889
|
-
|
1890
|
-
this.adapter.getRTCPeerConnection().ontrack = (event) => {
|
1891
|
-
// Display remote stream in remote video element
|
1892
|
-
if (remoteVideoRef) {
|
1893
|
-
remoteVideoRef.srcObject = event.streams[0];
|
1894
|
-
}
|
1895
|
-
};
|
1896
|
-
// Get user media
|
1897
|
-
const stream = await navigator.mediaDevices.getUserMedia(grant_permissions);
|
1898
|
-
if (localVideoRef) {
|
1899
|
-
localVideoRef.srcObject = stream;
|
1900
|
-
}
|
1901
|
-
// Add tracks to PeerConnection
|
1902
|
-
stream
|
1903
|
-
.getTracks()
|
1904
|
-
.forEach((track) =>
|
1905
|
-
this.adapter.getRTCPeerConnection()?.addTrack(track, stream)
|
1906
|
-
);
|
1907
|
-
|
1908
|
-
// Create offer and send it to backend via WebSocket
|
1909
|
-
const offer = await this.adapter.getRTCPeerConnection().createOffer();
|
1910
|
-
await this.adapter.getRTCPeerConnection().setLocalDescription(offer);
|
1911
|
-
await this.sendCallRequest({
|
1912
|
-
sdp: offer?.sdp,
|
1913
|
-
type: "offer",
|
1914
|
-
});
|
1915
|
-
}
|
1916
|
-
|
1917
|
-
async sendCallRequest(req: { type: string; sdp?: string }): Promise<void> {
|
1918
|
-
return await this.send({ call_request: req });
|
1919
|
-
}
|
1920
|
-
|
1921
|
-
async sendCallAccept(req: { type: string; sdp?: string }): Promise<void> {
|
1922
|
-
return await this.send({ call_accept: req });
|
1923
|
-
}
|
1924
|
-
|
1925
|
-
async sendICECandidateInit(req: {
|
1926
|
-
candidate: string;
|
1927
|
-
sdpMid?: string | undefined;
|
1928
|
-
sdpMLineIndex?: number | undefined;
|
1929
|
-
usernameFragment?: string | undefined;
|
1930
|
-
}): Promise<void> {
|
1931
|
-
return await this.send({ ice_candidate_init: req });
|
1932
|
-
}
|
1933
|
-
|
1934
1792
|
async followUsers(userIds: string[]): Promise<Status> {
|
1935
1793
|
const response = await this.send({ status_follow: { user_ids: userIds } });
|
1936
1794
|
return response.status;
|
@@ -2233,6 +2091,25 @@ export class DefaultSocket implements Socket {
|
|
2233
2091
|
return response.check_name_existed_event;
|
2234
2092
|
}
|
2235
2093
|
|
2094
|
+
async forwardWebrtcSignaling(receiver_id: string, data_type: number, json_data: string): Promise<WebrtcSignalingFwd> {
|
2095
|
+
const response = await this.send({
|
2096
|
+
webrtc_signaling_fwd: { receiver_id: receiver_id, data_type: data_type, json_data: json_data },
|
2097
|
+
});
|
2098
|
+
return response.webrtc_signaling_fwd;
|
2099
|
+
}
|
2100
|
+
|
2101
|
+
async handleMessageButtonClick (
|
2102
|
+
message_id: string,
|
2103
|
+
channel_id: string,
|
2104
|
+
button_id: string,
|
2105
|
+
sender_id: string,
|
2106
|
+
user_id: string): Promise<MessageButtonClicked> {
|
2107
|
+
const response = await this.send({
|
2108
|
+
message_button_clicked: { message_id: message_id, channel_id: channel_id, button_id: button_id, sender_id: sender_id, user_id: user_id },
|
2109
|
+
});
|
2110
|
+
return response.webrtc_signaling_fwd;
|
2111
|
+
}
|
2112
|
+
|
2236
2113
|
private async pingPong(): Promise<void> {
|
2237
2114
|
if (!this.adapter.isOpen()) {
|
2238
2115
|
return;
|