Skip to content

Commit 4604f8c

Browse files
author
Oleksandr Shvetsov
committed
SDK version updated to 2.12.6;
- Ability to disable auto-reject if user already in call added;
1 parent c931880 commit 4604f8c

File tree

6 files changed

+104
-41
lines changed

6 files changed

+104
-41
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Check out our [API Reference](https://quickblox.github.io/quickblox-javascript-s
1616
## Dependencies for browser
1717

1818
```html
19-
<script src="https://cdnjs.cloudflare.com/ajax/libs/quickblox/2.12.5/quickblox.min.js"></script>
19+
<script src="https://cdnjs.cloudflare.com/ajax/libs/quickblox/2.12.6/quickblox.min.js"></script>
2020
```
2121

2222
## Bower and RequireJS

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "quickblox",
33
"description": "QuickBlox JavaScript SDK",
4-
"version": "2.12.5",
4+
"version": "2.12.6",
55
"homepage": "https://quickblox.com/developers/Javascript",
66
"main": "src/qbMain.js",
77
"license": "(Apache-2.0)",

quickblox.js

Lines changed: 51 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43561,6 +43561,7 @@ var Helpers = require('./qbWebRTCHelpers');
4356143561
var RTCPeerConnection = require('./qbRTCPeerConnection');
4356243562
var SignalingConstants = require('./qbWebRTCSignalingConstants');
4356343563
var Utils = require('../../qbUtils');
43564+
var config = require('../../qbConfig');
4356443565

4356543566
function WebRTCClient(service, connection) {
4356643567
if (WebRTCClient.__instance) {
@@ -43693,24 +43694,37 @@ WebRTCClient.prototype.clearSession = function(sessionId) {
4369343694
* @returns {boolean} if active or new session exist
4369443695
*/
4369543696
WebRTCClient.prototype.isExistNewOrActiveSessionExceptSessionID = function(sessionID) {
43696-
var self = this;
4369743697
var exist = false;
43698+
var sessions = this.sessions;
4369843699

43699-
if (Object.keys(self.sessions).length > 0) {
43700-
Object.keys(self.sessions).forEach(function(key, i, arr) {
43701-
var session = self.sessions[key];
43702-
if (session.state === WebRTCSession.State.NEW || session.state === WebRTCSession.State.ACTIVE) {
43703-
if (session.ID !== sessionID) {
43704-
exist = true;
43705-
// break; // break doesn't work in 'forEach', need to find another way
43706-
}
43707-
}
43700+
if (Object.keys(sessions).length > 0) {
43701+
exist = Object.keys(sessions).some(function (key) {
43702+
var session = sessions[key];
43703+
var sessionActive = (
43704+
session.state === WebRTCSession.State.NEW ||
43705+
session.state === WebRTCSession.State.ACTIVE
43706+
);
43707+
return sessionActive && session.ID !== sessionID;
4370843708
});
4370943709
}
4371043710

4371143711
return exist;
4371243712
};
4371343713

43714+
WebRTCClient.prototype.getNewSessionsCount = function (exceptId) {
43715+
var sessions = this.sessions;
43716+
return Object.keys(sessions).reduce(function (count, sessionId) {
43717+
var session = sessions[sessionId];
43718+
if (session.ID === exceptId) {
43719+
return count;
43720+
}
43721+
var sessionActive = (
43722+
session.state === WebRTCSession.State.NEW
43723+
);
43724+
return sessionActive ? count + 1 : count;
43725+
}, 0);
43726+
};
43727+
4371443728
/**
4371543729
* DELEGATE (signaling)
4371643730
*/
@@ -43719,7 +43733,18 @@ WebRTCClient.prototype._onCallListener = function(userID, sessionID, extension)
4371943733

4372043734
Helpers.trace("onCall. UserID:" + userID + ". SessionID: " + sessionID);
4372143735

43722-
if (this.isExistNewOrActiveSessionExceptSessionID(sessionID)) {
43736+
var otherActiveSessions = this.isExistNewOrActiveSessionExceptSessionID(sessionID);
43737+
var newSessionsCount = this.getNewSessionsCount(sessionID);
43738+
if (otherActiveSessions && !this.sessions[sessionID]) {
43739+
newSessionsCount++;
43740+
}
43741+
43742+
var reject = (
43743+
otherActiveSessions &&
43744+
(config.webrtc.autoReject || newSessionsCount > config.webrtc.incomingLimit)
43745+
);
43746+
43747+
if (reject) {
4372343748
Helpers.trace('User with id ' + userID + ' is busy at the moment.');
4372443749

4372543750
delete extension.sdp;
@@ -43735,12 +43760,18 @@ WebRTCClient.prototype._onCallListener = function(userID, sessionID, extension)
4373543760
var session = this.sessions[sessionID],
4373643761
bandwidth = +userInfo.bandwidth || 0;
4373743762

43738-
if (!session) {
43739-
session = this._createAndStoreSession(sessionID, extension.callerID, extension.opponentsIDs, extension.callType, bandwidth);
43740-
43741-
if (typeof this.onCallListener === 'function') {
43742-
Utils.safeCallbackCall(this.onCallListener, session, userInfo);
43743-
}
43763+
if (!session) {
43764+
session = this._createAndStoreSession(
43765+
sessionID,
43766+
extension.callerID,
43767+
extension.opponentsIDs,
43768+
extension.callType,
43769+
bandwidth
43770+
);
43771+
}
43772+
43773+
if (typeof this.onCallListener === 'function') {
43774+
Utils.safeCallbackCall(this.onCallListener, session, userInfo);
4374443775
}
4374543776

4374643777
session.processOnCall(userID, extension);
@@ -43883,7 +43914,7 @@ function getOpponentsIdNASessions(sessions) {
4388343914
return opponents;
4388443915
}
4388543916

43886-
},{"../../qbUtils":209,"./qbRTCPeerConnection":197,"./qbWebRTCHelpers":199,"./qbWebRTCSession":200,"./qbWebRTCSignalingConstants":201,"./qbWebRTCSignalingProcessor":202,"./qbWebRTCSignalingProvider":203}],199:[function(require,module,exports){
43917+
},{"../../qbConfig":205,"../../qbUtils":209,"./qbRTCPeerConnection":197,"./qbWebRTCHelpers":199,"./qbWebRTCSession":200,"./qbWebRTCSignalingConstants":201,"./qbWebRTCSignalingProcessor":202,"./qbWebRTCSignalingProvider":203}],199:[function(require,module,exports){
4388743918
'use strict';
4388843919

4388943920
/**
@@ -45589,6 +45620,8 @@ var config = {
4558945620
chatReconnectionTimeInterval: 5,
4559045621
webrtc: {
4559145622
answerTimeInterval: 60,
45623+
autoReject: true,
45624+
incomingLimit: 1,
4559245625
dialingTimeInterval: 5,
4559345626
disconnectTimeInterval: 30,
4559445627
statsReportTimeInterval: false,

quickblox.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/modules/webrtc/qbWebRTCClient.js

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ var Helpers = require('./qbWebRTCHelpers');
2323
var RTCPeerConnection = require('./qbRTCPeerConnection');
2424
var SignalingConstants = require('./qbWebRTCSignalingConstants');
2525
var Utils = require('../../qbUtils');
26+
var config = require('../../qbConfig');
2627

2728
function WebRTCClient(service, connection) {
2829
if (WebRTCClient.__instance) {
@@ -155,24 +156,37 @@ WebRTCClient.prototype.clearSession = function(sessionId) {
155156
* @returns {boolean} if active or new session exist
156157
*/
157158
WebRTCClient.prototype.isExistNewOrActiveSessionExceptSessionID = function(sessionID) {
158-
var self = this;
159159
var exist = false;
160+
var sessions = this.sessions;
160161

161-
if (Object.keys(self.sessions).length > 0) {
162-
Object.keys(self.sessions).forEach(function(key, i, arr) {
163-
var session = self.sessions[key];
164-
if (session.state === WebRTCSession.State.NEW || session.state === WebRTCSession.State.ACTIVE) {
165-
if (session.ID !== sessionID) {
166-
exist = true;
167-
// break; // break doesn't work in 'forEach', need to find another way
168-
}
169-
}
162+
if (Object.keys(sessions).length > 0) {
163+
exist = Object.keys(sessions).some(function (key) {
164+
var session = sessions[key];
165+
var sessionActive = (
166+
session.state === WebRTCSession.State.NEW ||
167+
session.state === WebRTCSession.State.ACTIVE
168+
);
169+
return sessionActive && session.ID !== sessionID;
170170
});
171171
}
172172

173173
return exist;
174174
};
175175

176+
WebRTCClient.prototype.getNewSessionsCount = function (exceptId) {
177+
var sessions = this.sessions;
178+
return Object.keys(sessions).reduce(function (count, sessionId) {
179+
var session = sessions[sessionId];
180+
if (session.ID === exceptId) {
181+
return count;
182+
}
183+
var sessionActive = (
184+
session.state === WebRTCSession.State.NEW
185+
);
186+
return sessionActive ? count + 1 : count;
187+
}, 0);
188+
};
189+
176190
/**
177191
* DELEGATE (signaling)
178192
*/
@@ -181,7 +195,18 @@ WebRTCClient.prototype._onCallListener = function(userID, sessionID, extension)
181195

182196
Helpers.trace("onCall. UserID:" + userID + ". SessionID: " + sessionID);
183197

184-
if (this.isExistNewOrActiveSessionExceptSessionID(sessionID)) {
198+
var otherActiveSessions = this.isExistNewOrActiveSessionExceptSessionID(sessionID);
199+
var newSessionsCount = this.getNewSessionsCount(sessionID);
200+
if (otherActiveSessions && !this.sessions[sessionID]) {
201+
newSessionsCount++;
202+
}
203+
204+
var reject = (
205+
otherActiveSessions &&
206+
(config.webrtc.autoReject || newSessionsCount > config.webrtc.incomingLimit)
207+
);
208+
209+
if (reject) {
185210
Helpers.trace('User with id ' + userID + ' is busy at the moment.');
186211

187212
delete extension.sdp;
@@ -197,12 +222,18 @@ WebRTCClient.prototype._onCallListener = function(userID, sessionID, extension)
197222
var session = this.sessions[sessionID],
198223
bandwidth = +userInfo.bandwidth || 0;
199224

200-
if (!session) {
201-
session = this._createAndStoreSession(sessionID, extension.callerID, extension.opponentsIDs, extension.callType, bandwidth);
202-
203-
if (typeof this.onCallListener === 'function') {
204-
Utils.safeCallbackCall(this.onCallListener, session, userInfo);
205-
}
225+
if (!session) {
226+
session = this._createAndStoreSession(
227+
sessionID,
228+
extension.callerID,
229+
extension.opponentsIDs,
230+
extension.callType,
231+
bandwidth
232+
);
233+
}
234+
235+
if (typeof this.onCallListener === 'function') {
236+
Utils.safeCallbackCall(this.onCallListener, session, userInfo);
206237
}
207238

208239
session.processOnCall(userID, extension);

src/qbConfig.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,12 @@ var config = {
3636
chatReconnectionTimeInterval: 5,
3737
webrtc: {
3838
answerTimeInterval: 60,
39+
autoReject: true,
40+
incomingLimit: 1,
3941
dialingTimeInterval: 5,
4042
disconnectTimeInterval: 30,
4143
statsReportTimeInterval: false,
4244
iceServers: [
43-
{
44-
'url': 'stun:stun.l.google.com:19302'
45-
},
4645
{
4746
'url': 'stun:turn.quickblox.com',
4847
'username': 'quickblox',

0 commit comments

Comments
 (0)