Releases: QuickBlox/quickblox-javascript-sdk
2.12.5
Dependencies updated;
Bugfix;
2.12.4
Bug with integration with node.js fixed;
2.12.3
Dependencies updated:
"lodash": ">=4.17.13",
"lodash.template": ">=4.5.0",
"handlebars": ">=4.1.0",
"js-yaml": ">=3.13.1",
"marked": "^0.6.0",
"ws": ">=3.3.1",
"node.extend": ">=1.1.7",
"cached-path-relative": ">=1.0.2",
"karma": "^4.2.0"
2.12.2
An issue with video calls in Safari 11 fixed.
2.12.1
- Fix of security vulnerabilities in dependencies
2.12.0
Removed:
- Remove unused samples (users, roster). All cases will be shown at chat, data, webrtc samples;
- The window.navigator.onLine check was remove (the check was move to the WebRTC Sample); To make sure that a client has internet connecteion before make a call;
Fixed:
- during the call (WebRTC session) the WebRTC Sample will be able to switch to other camera, if it is possible and would stop call if all media devices were unplugged;
- bugs were fixed when user doesn't allow permanent permissions for getUserMedia;
Added:
- Ability to restore connect to chat by time interval after disconnect, if it wasn't voluntary (Added for node-xmpp-client and nativescript-xmpp-client, updated for Strophe.js client).
Add a propertychatReconnectionTimeInterval
to config, by default is 5 sec;
QB.chat.disconnect()
stops reconnection actions; - The call of
QB.chat.connect(params, callback)
when chat is in connecting state (the connection one by one) was blocked, the callback funtion will return an error ('Status.REJECT - The connection is still in the Status.CONNECTING state'); QB.webrtc.onDevicesChangeListener()
was added - the listener that is called when a media device has been plugged or unplugged;- An ability to change audio and video tracks was added (switch cameras), use the method
webRTCSession.switchMediaTracks(deviceIds, cb)
.
Supported and tested on Firefox from v.60.
Here is code snippet how to replace audio/video tracks:
var switchMediaTracksBtn = document.getElementById('confirmSwitchMediaTracks');
var webRTCSession = QB.webrtc.createNewSession(params);
QB.webrtc.getMediaDevices('videoinput').then(function(devices) {
var selectVideoInput = document.createElement('select'),
selectVideoInput.id = 'videoInput',
someDocumentElement.appendChild(selectVideoInput);
if (devices.length > 1) {
for (var i = 0; i !== devices.length; ++i) {
var device = devices[i],
option = document.createElement('option');
if (device.kind === 'videoinput') {
option.value = device.deviceId;
option.text = device.label;
selectVideoInput.appendChild(option);
}
}
}
}).catch(function(error) {
console.error(error);
});
QB.webrtc.getMediaDevices('audioinput').then(function(devices) {
var selectAudioInput = document.createElement('select'),
selectAudioInput.id = 'audioInput',
someDocumentElement.appendChild(selectAudioInput);
if (devices.length > 1) {
for (var i = 0; i !== devices.length; ++i) {
var device = devices[i],
option = document.createElement('option');
if (device.kind === 'audioinput') {
option.value = device.deviceId;
option.text = device.label;
selectAudioInput.appendChild(option);
}
}
}
}).catch(function(error) {
console.error(error);
});
switchMediaTracksBtn.onclick = function(event) {
var audioDeviceId = document.getElementById('audioInput').value || undefined,
videoDeviceId = document.getElementById('videoInput').value || undefined,
deviceIds = {
audio: audioDeviceId,
video: videoDeviceId,
};
var callback = function(error, stream) {
if (err) {
console.error(error);
} else {
console.log(stream);
}
};
// Switch media tracks in audio/video HTML's element (the local stream)
// replace media tracks in peers (will change media tracks for each user in WebRTC session)
webRTCSession.switchMediaTracks(deviceIds, callback);
}
2.11.0
New:
- Add header 'QB-OS' in all API requests for improving analytics;
Updated:
-
Encode body of all API requests;
Encode based on this https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters; -
Rework
muc.join
method:- Rework putting parameters of the muc.join method. Now could pass
jid
orid
of a dialog; - Now uses Node.js callbacks approach instead of a returned stanza if you pass 2 arguments to the callback function. If you pass 1 arguments you will get stanza element as before;
- Rework putting parameters of the muc.join method. Now could pass
QB.chat.muc.join(dialogId, function(error, response) {
if(error) {
console.log('Error is null when all is Ok');
}
console.log(`response.dialogId` is always contains in response);
});
- QB.webrtc.onCallStatsReport(session, userId, stats, error) will return new (uptaded) stats:
stats = {
local: {
audio: {
bitrate: 71, // kilobits per second (kbps)
bytesSent: 226410,
packetsSent: 1250,
timestamp: 1522680935736
},
video: {
frameHeight: 480,
frameWidth: 640,
framesPerSecond: 25.8,
bitrate: 498, // kilobits per second (kbps)
bytesSent: 1438862,
packetsSent: 1498,
timestamp: 1522680935736
},
candidate: {
protocol: "udp"
ip: "192.168.1.179"
port: 51038
}
},
remote: {
audio: {
bitrate: 47, // kilobits per second (kbps)
bytesReceived: 148211,
packetsReceived: 1250,
timestamp: 1522680935736
},
video: {
frameHeight: 480,
frameWidth: 640,
framesPerSecond: 30.4,
bitrate: 533, // kilobits per second (kbps)
bytesReceived: 1663716,
packetsReceived: 1498,
timestamp: 1522680935736
},
candidate: {
protocol: "udp",
ip: "192.168.1.179",
port: 51908
}
}
}
2.10.0
Improvements / Updated:
- Add the opportunity to choose crypto standard (sha1, sha256);
By default, uses sha1. If you want to use sha256 addhash
property to config;
var CONFIG = {
debug: {mode: 1},
hash: 'sha256'
};
QB.init(3477, 'ChRnwEJ3WzxH9O4', 'AS546kpUQ2tfbvv', CONFIG);
2.9.0
Added:
-
Add possibility to set a bandwidth limit for the video call.
Set the bandwidth at create sssion byQB.webrtc.createNewSession(calleesIds, sessionType, callerID, { bandwidth: Number });
. -
Add DELETE Custom Object by criteria by updated a method QB.data.delete.
Now the method takesQB.data.delete(className, {string|array|object}, callback)
where second parameter an id (String) or a list of ids (Array) or criteria rules (Object) to delete.
Check out docs for more details;
Updated:
-
Normalize an answer on DELETE Custom Object by criteria for any passed types.
Check out docs for more details; -
Update QB.webrtc.onCallStatsReport(session, userId, stats, error) listener;
Samples:
-
Add ability set credentials and endpoints by search param of URL in webRTC sample:
https//:www.host.com/?appId={Number}&authKey={String}&authSecret={String}&endpoints.api={String}&endpoints.chat={String}
.
Also remove production configuration/app and leave stage app configuration; -
Add a bandwidth configuration to WebRTC sample;
-
Remove code for "Hack for Firefox" (https://bugzilla.mozilla.org/show_bug.cgi?id=852665) cause we are support FF52+ now;
2.8.1
Fixed:
- the Fetch API (if a response is an empty body);
- the header 'Content-Type' in the qbData module;
- the header 'QB-SDK' for REST API requests;
- the QB.chat.message.unreadCount() method;
- the QB.chat.dialog.create() method;
- the QB.users.listUsers() method;
Samples:
- fixes for the Chat Sample:
- fixes for the Sata Sample:
- fixes for the WebRTC Sample: