Releases: Temasys/SkylinkJS
0.6.7: Fixes with MCU connectivity issues
Dependencies
Socket.io-client: 1.3.7
AdapterJS: 0.12.3
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.7/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.7/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.7/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.7/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.6.7/doc/classes/Skylink.html
NPM Installation
npm install git://github.com/Temasys/SkylinkJS#0.6.7
Bug-fixes
Peer
- Fixes for MCU connectivity #181
Improvements
Stream
- Allow
localhost
connection for bothhttp:
andhttps:
. Chrome will throw the error for nonlocalhost
domains onhttp:
accessing protocol.
0.6.6: Improvements for reconnection
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.6/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.6/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.6/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.6/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.6.6/doc/classes/Skylink.html
NPM Installation
npm install git://github.com/Temasys/SkylinkJS#0.6.6
Bug-fixes
- Fixed and update demo list #180
Stream
- Fixes for
MediaStream.stop()
deprecation in Firefox. - Fixes for Opera freezing when invoking
.stopStream()
. #176
Improvements
Stream
- Removed tracks checker #163
Peer
- Improved restart mechanism and re-connectivity speed by using re-handshaking of offer / answer and iceRestarts
0.6.5: Bug-fixes for MCU transfers
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.5/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.5/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.5/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.5/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.6.5/doc/classes/Skylink.html
NPM Installation
npm install git://github.com/Temasys/SkylinkJS#0.6.5
Bug-fixes
- Fixes for mismatch domain name in self-signed certificate
Transfers
- Fixes for duplicate transfers when sending blobs with
sendBlobData()
using a MCU connection. This may be an issue withsendURLData()
as well. - Fixes for any potential duplicate messages when sending messages with
sendP2PMessage()
using a MCU connection.
Stream
- Fixes for
stopScreen()
triggeringincomingStream
event when user is not in the room.
0.6.4: Bug-fixes for screensharing in incomingStream event
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.4/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.4/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.4/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.4/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.6.4/doc/classes/Skylink.html
NPM Installation
npm install git://github.com/Temasys/SkylinkJS#0.6.4
Improvements
Room
- Providing
joinRoom(null, {})
should throw an error #147
Peer
Improvements have been made to reconnections.
Stream
- Implemented throttling to
shareScreen()
of about 10s for better experience. - Screensharing errors should be returned in callback instead of throwing it #152
Bug-fixes
- Script encoding issue is resolved #118
Room
- Providing credentials with invalid
duration
,startDateTime
andcredentials
should not set the credentials at all. peerLeft
should trigger before the nextincomingStream
to prevent multiple video streams in applications.
Stream
- Fixed local screensharing
incomingStream
eventstream
payload is the user media Stream ornull
. - Fixed when joining the room multiple times results in duplicate videos of self in demo due to
incomingStream
event triggered beforepeerLeft
event.
Peer
peerRestart
is triggered twice on remote peer's end.
0.6.3: Improvements with MCU restart functionality
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.3/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.3/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.3/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.3/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.6.3/doc/classes/Skylink.html
NPM Installation
npm install git://github.com/Temasys/SkylinkJS#0.6.3
Improvements
Peer
- Used
.urls
when adding ICE server configuration for Peer connections. Fallback to.url
if not supported. - Improved restart functionality with MCU
Documentation
- Updated some documentation changes.
Demo
server.js
will run only onhttps://
to handlegetUserMedia()
's deprecation.- Added privileged key demo
Room
stopMediaOptions
inleaveRoom()
method is a JSON object that has options to stop screensharing or user media stream individually. Providing a valuetrue
instead of an object with options like{ userMedia: false, screenshare: true }
will result in options as bothtrue
. By default, if this parameter is not defined, the value istrue
.
Stream
- Added
isAudioFallbackError
payload parameter tomediaAccessError
event to indicate if error is linked to a failed fallback - Added
mediaAccessFallback
event when fallbacking to audio only call after a failed video+audio call.
Bug-fixes
- Fixed
peerBrowser.os
not defined error while calling with application built with mobile SDKs. shareScreen()
breaks sometimes during an MCU connection
Stream
- Fixed
incomingStream
from firing multiple times when invokinggetUserMedia()
beforejoinRoom()
. - Fixed
MediaStream.ended
deprecation that is still showing up.
Things that Developers should take note of
Changes required to make when integrating 0.6.3
getUserMedia()
will throw an error withhttp://
in Chrome 47 and above (due to deprecation in Chrome). We recommend to please move your application to run onhttps://
.- Using
refreshConnection()
during a MCU connection with targeted peers is not supported. This will refresh all the Peer connections due to the invoke ofleaveRoom()
and thenjoinRoom()
.peerJoined
andpeerLeft
events will be triggered other thanpeerRestart
event. Note thatshareScreen()
,stopScreen()
andsendStream()
uses therefreshConnection()
method to replace the current stream sent to Peers.
0.6.2: Bug-fixes for shareScreen() invoking multiple times
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.2/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.2/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.2/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.2/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.6.2/doc/classes/Skylink.html
NPM Installation
npm install [email protected]
Improvements
Stream
stopStream()
andstopScreen()
would handle theMediaStream.stop()
deprecation method with version M47 and useMediaStreamTrack.stop()
instead.
Bug-fixes
Demo
- Peer's Stream gets muted in
/demo/app
.
Room
shareScreen()
should be able to share the screen repeat times in Chrome.
0.6.1: Simultaneous Data Transfers
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.1/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.1/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.1/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.1/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.6.1/doc/classes/Skylink.html
NPM Installation
npm install [email protected]
New Features
Simultaneous Data Transfers
This is a new feature that allows users to send multiple simultaneous Data Transfers by opening new DataChannel connections for particular transfers.
- Added a new attribute called
DATA_CHANNEL_TYPE
for identifying the types of DataChannel connection it's used for.
Target multiple Peers
This is a new feature that allows users to send private messages / transfers to certain targeted Peers by passing in an array of targeted Peers. This is available in refreshConnection()
, sendP2PMessage()
, sendMessage()
, sendBlobData()
, sendURLData()
.
Identification of server Peers
This is a new feature that allow developers to know when a server Peer has joined the room.
- Added a new attribute called
SERVER_PEER_TYPE
for identifying the types of server Peer. This list will be populated eventually when there are new types available. - Added a new event called
serverPeerJoined
for identifying the state when a server Peer has joined the room. - Added a new event called
serverPeerLeft
for identifying the state when a server Peer has left the room. - Added a new event called
serverPeerRestart
for identifying the state when a server Peer connection has been refreshed (restarted).
Privileged Key Scheme
This is a feature that allows privileged Peers to have the ability to introduce unprivileged Peers who does not know any peers in the room except what the privileged Peers introduces.
This is currently unofficially released. You may configure the privileged key feature by toggling the isPrivileged
for alias Application Keys to true
true
to make any Peer using the key become a privileged Peer.
- Added a new attribute called
GET_PEERS_STATE
for identifying the states ofgetPeers()
when retrieving the list unprivileged Peers in a room. - Added a new attribute called
INTRODUCE_STATE
for identifying the states ofintroducePeer()
when introducing one unprivileged Peer to another unprivileged Peer. This would work for introducing privileged Peers as well. - Added a new method called
getPeers()
that allows privileged Peers to get the list of unprivileged / privileged Peers in the room. - Added a new method called
introducePeer()
that allows privileged Peers to introduce an unprivileged Peer to another unprivileged Peer. Privileged Peers is also able to introduce other Peers to other privileged Peers. - Added a new event called
getPeersStateChange
that identifies the state ofgetPeers()
. - Added a new event called
introduceStateChange
that identifies the state ofintroducePeer()
.
Improvements
Documentation / Testing
- Troubleshooting should redirect to http://support.temasys.com.sg/support/solutions/folders/5000267498
- Added new test scripts
- Updated documentation for clarity.
- Demo code examples and test scripts are documented in separate README.md files in the relevant folders.
Room
joinRoom()
would allow seamless Stream connection without stopping the previously attached Stream unless media constraints are passed in the options to refetch and attach a new Stream.leaveRoom()
method takes in a new optional parameterstopUserMedia
that by default istrue
. It is a flag that tells Skylink not to stop self Stream when leaving the room.- Added a new configuration setting in
init()
calledforceTURNSSL
that causes any TURN server connections to use port443
SSL connections always. Ifturns:
protocol is supported, it will use theturns:
protocol. - Added a new configuration setting in
init()
calledforceTURN
that forces TURN server connection always. This will reset configuration settings forenableSTUNServer
andenableTURNServer
. - Added a new configuration setting in
init()
calledusePublicSTUN
that allows Skylink to use and connect using public STUN server instead of Skylink's platform own. - When video stream is not available for Room connection, the connection stream would fallback to audio only Stream connection in
joinRoom()
. - Added a new option in
TURN_TRANSPORT
calledALL
which allows connectivity with all transports and none. - Removed options in
SYSTEM_ACTION_REASON
as they are no longer in use.FAST_MESSAGE
,ROOM_FULL
,VERIFICATION
andOVER_SEAT_LIMIT
. - Removed options in
READY_STATE_CHANGE_ERROR
as they are no longer in use.API_NOT_ENOUGH_CREDIT
,API_NOT_ENOUGH_PREPAID_CREDIT
,API_FAILED_FINDING_PREPAID_CREDIT
. - Added
room
parameter inreadyStateChange
event to identify which room is the connection information retrieved for. - Fixed
callback
function with consistent payloads ininit()
,joinRoom()
andleaveRoom()
. - Added more errors in
callback
function forinit()
whenXMLHttpRequest
fails andjoinRoom()
wheninit()
orgetUserMedia()
fails.
Stream
- Added a new event called
streamMuted
that triggers when a Stream audio / video streaming muted status has been changed. This would still trigger if self has not joined the room. - Added a new
config.video.optional
andconfig.audio.optional
settings in methodgetUserMedia()
for advanced developers familiar with thenavigator.getUserMedia()
API. This is available in methodsjoinRoom()
andsendStream()
as well. peerInfo
video information should contain a flag calledscreenshare
that indicates if the Stream video streaming is a screensharing stream. When it is a screensharing Stream, it should display the Stream audio and video status as well.shareScreen
method takes in a new optional parameterenableAudio
that by default istrue
. It is a flag that tells Skylink if the screensharing stream should contain audio or not.mediaAccessError
,mediaAccessStopped
,streamEnded
,streamMuted
should contain theisScreensharing
flag that indicates if Stream is a screensharing stream or not.- Fixed
callback
function with consistent payloads inshareScreen()
,getUserMedia()
andsendStream()
.
Peer
- Added a new
room
information in thepeerInfo
data (or the returned data ingetPeerInfo()
) that would display the current room that the Peer is connected to. - Added a new
agent.os
information in thepeerInfo
data (or the returned data ingetPeerInfo()
) that would display the operating system (or platform) that the PeerConnection peer is on. - Added
refreshConnection()
andshareScreen()
functionality for MCU connection.refreshConnection()
would enable self to leave and join the room again. - Fixed
callback
function with consistent payloads inrefreshConnection()
,getPeers()
.
Data
- Added a new method called
sendURLData()
that allow developers to send base64 encoded data URL. transferInfo
information should contain a flag calledisPrivate
that indicates if Data Transfer is a targeted transfer or a broadcasted transfer.transferInfo
information should contain a string calleddataType
that indicates if Data Transfer data is a"blob"
for Blob type of transfers sent usingsendBlobData()
or a"dataURL"
for data URL type of transfers usingsendURLData()
.- Added a new event called
incomingData
that triggers when data is received from PeerConnection peer. - Added a new event called
incomingDataRequest
that triggers when data transfer request is made from PeerConnection peer. - Fixed
callback
function with consistent payloads insendBlobData()
,sendURLData()
.
IE 9 - 10 Support
While we do much support for IE 9 - 10, it's recommended that developers do not add attributes or methods that is not supported for <object>
DOM elements that are for <video>
and <audio>
DOM elements. We have polyfilled Object.keys
, Date.getISOString()
and addEventListener
to make sure it runs fine in Skylink.
Socket
- Automatically connect using
"Polling"
instead of"WebSocket"
is WebSocket is not supported.
Bug-fixes
Documentation / Testing
- Fixed most documentation errors
e.g.iceConnectionState
event is missing - Fixed most test errors (although there are still some).
- "Scroll to Top" button should scroll to the top.
Room
joinRoom()
should always triggerincomingStream
when there is a Stream sending if self is rejoining the room multiple times.- If
room
parameter is not provided, it should always connect to thedefaultRoom
provided in theinit()
options. - Connection should not be interrupted with
streamEnded
event. - Configuring
TURN_TRANSPORT.UDP
orTURN_TRANSPORT.TCP
ininit()
should not break connection.
Peer
getPeerInfo()
should return exact Stream information when information has already been updated.
Stream
enableVideo()
andenableAudio()
should not work if no Stream is present.muteStream()
should update theaudioMuted
andvideoMuted
status correctly. This causes theenableVideo()
andenableAudio()
bugs.
Things that Developers should take note of
Changes required to make when integrating 0.6.1
respondBlobRequest
would take in a mandatorytransferId
field in order to respond to the incoming transfers.cancelBlobRequest
would take in a mandatorytransferId
field and not `tra...
0.6.0: skylink.shareSceen() for Chrome/FF/IE/Safari
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.0/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.0/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.0/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.6.0/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.6.0/doc/classes/Skylink.html
NPM Installation
npm install [email protected]
New Features
- Added a new method called shareScreen that enables you to share your screen in the current session. This is not supported in Opera and only in Premium plugin versions.
- Added a new method called stopScreen that stops your screensharing session.
- AUDIO_ENCODING << attribute >> has a new option called AUTO that does not force set any encoding and it's the default option.
- VIDEO_ENCODING << attribute >> has a new option called AUTO that does not force set any encoding and it's the default option.
- READY_STATE_CHANGE_ERROR << attribute >> has a new option called ADAPTER_NO_LOADED that indicates if the correct adapterjs is loaded or not. It throws when adapterjs is not loaded as well.
Bug-fixes
- Fixed in demo/app for muted and autoplay option crashing in some IE 11 browsers
- Fixed VIDEO_RESOLUTION options #110
0.5.10: H264, iSAC support and bug fixes
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.5.10/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.5.10/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.5.10/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.5.10/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.5.10/doc/classes/Skylink.html
NPM Installation
npm install [email protected]
Skyway/Skylink compatibility
- The existing Skyway object and its CDN paths will remain available for all versions
< 0.6.0
New Features
- Added a new attribute called VIDEO_ENCODING setting priority for SDP (VP8, H265)
- Added a new attribute called AUDIO_ENCODING setting priority for SDP (iSAC, OPUS)
- init << method >> options allows you to set the audioEncoding and videoEncoding.
- muteStream << method>> getEmptyStream option is removed.
- getUserData << method >> providing a peerId returns a peer's userData.
- Added SM_PROTOCOL_VERSION for SDK developers to see the standard Signalling message protocol version.
- Added DT_PROTOCOL_VERSION for SDK developers to see the standard Data transfer protocol version.
- Browserify support
Bug-fixes
- Long-polling fixes. After a failed 5th attempt to reconnect, reconnection should be aborted.
- Hidden private methods and attributes in documentation.
- Fixes for XDomainRequest not working #21
- Fixes for documentation not loading when file is not hosted in a virtual server.
Improvements
- Reordered documentation tabs.
- getPeerInfo << method >> not providing a valid peerId returns null.
- Cleaned up incorrect SDP parsings.
- Added main reference in package.json for react framework usage.
- Merged MCU changes pr#107
- Improved reconnection for slower congested network. To improve further.
- Use signalling provided list of ports instead of hard-coding them.
General changes
- Updated SDP test for new improved SDP parsing.
- Updated socket test for new way of socket connection.
- Updated messaging to always provide values to follow SM_PROTOCOL and DT_PROTOCOL standards cross-sdk.
0.5.9: npm/bower support and peer connection reliability updates
Dependencies
CDN links (gzipped)
- Minified library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.5.9/skylink.min.js
- Debug library:
//cdn.temasys.com.sg/skylink/skylinkjs/0.5.9/skylink.debug.js
- Minified with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.5.9/skylink.complete.min.js
- Debug with all dependencies:
//cdn.temasys.com.sg/skylink/skylinkjs/0.5.9/skylink.complete.js
API Documentation
http://cdn.temasys.com.sg/skylink/skylinkjs/0.5.9/doc/classes/Skylink.html
NPM Installation
npm install [email protected]
Skyway/Skylink compatibility
- The existing Skyway object and its CDN paths will remain available for all versions
< 0.6.0
New Features
- npm install/bower install support
- CDN links now offering gzipped content
- generateUUID << method >> - that allows you to generate random unique ids.
- ICE_CONNECTION_STATE.TRICKLE_FAILED << attribute >> - state that throws in iceConnectionState event after 3 attempts of ICE trickle failed. After this event state, ICE trickling would be disabled.
- sendBlobData << method >> - callback error has more detailed signature to indicate whether it fails because of ongoing transfer or data channel not ready.
- ICE trickle is enabled for MCU in Firefox browsers.
Bug-fixes
- refreshConnection << method >> - is now able to refresh multiple peers when peerId parameter is not provided. #92
- When receiving a redirect to kick user out, it should close all current video streams connection. #93
- setUserData << method >> - userData not set when invoked before joinRoom(). #89
- sendBlobData << method >> - success callback should only fire when respective transfer completed. #95
- dataChannelState << event >> - OPEN should be fired in safari browsers when DataChannel actually opened. #94
- Test script for stream test in firefox.
- Test script for sdp test in firefox.
- Test script for event test in firefox.
Improvements
- Improvement: Implemented RTCPeerConnection.addIceCandidate success and failure callbacks for better feedback on success and failure state.
- Improvement: Implemented firefox new format of RTCOfferOptions in RTCPeerConnection.createOffer for firefox 32 + to move from deprecated options.
- Improvement: Restart message has timestamp so that during a short interval only one connection refresh can happen on either sides.
- Improvement: Handled most use-cases of connection issues with Firefox (win) to Chrome (mac). For some use cases when the ICE connection is connected but no video stream appears, use refreshConnection() to handle this case. #91
General Changes
- General changes: Disabled refreshConnection() functionality for MCU until it is supported.
- Moved _throttle() test to helper test.
- Updated all tests scripts with more informative details.