Skip to content

Releases: Temasys/SkylinkJS

0.6.7: Fixes with MCU connectivity issues

29 Dec 10:30
Compare
Choose a tag to compare

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 both http: and https:. Chrome will throw the error for non localhost domains on http: accessing protocol.

0.6.6: Improvements for reconnection

23 Dec 22:57
Compare
Choose a tag to compare

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

15 Dec 11:47
Compare
Choose a tag to compare

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 with sendURLData() as well.
  • Fixes for any potential duplicate messages when sending messages with sendP2PMessage() using a MCU connection.
Stream
  • Fixes for stopScreen() triggering incomingStream event when user is not in the room.

0.6.4: Bug-fixes for screensharing in incomingStream event

19 Nov 13:29
Compare
Choose a tag to compare

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 and credentials should not set the credentials at all.
  • peerLeft should trigger before the next incomingStream to prevent multiple video streams in applications.
Stream
  • Fixed local screensharing incomingStream event stream payload is the user media Stream or null.
  • Fixed when joining the room multiple times results in duplicate videos of self in demo due to incomingStream event triggered before peerLeft event.
Peer
  • peerRestart is triggered twice on remote peer's end.

0.6.3: Improvements with MCU restart functionality

26 Oct 06:52
Compare
Choose a tag to compare

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 on https:// to handle getUserMedia()'s deprecation.
  • Added privileged key demo
Room
  • stopMediaOptions in leaveRoom() method is a JSON object that has options to stop screensharing or user media stream individually. Providing a value true instead of an object with options like { userMedia: false, screenshare: true } will result in options as both true. By default, if this parameter is not defined, the value is true.
Stream
  • Added isAudioFallbackError payload parameter to mediaAccessError 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 invoking getUserMedia() before joinRoom().
  • 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 with http:// in Chrome 47 and above (due to deprecation in Chrome). We recommend to please move your application to run on https://.
  • Using refreshConnection() during a MCU connection with targeted peers is not supported. This will refresh all the Peer connections due to the invoke of leaveRoom() and then joinRoom(). peerJoined and peerLeft events will be triggered other than peerRestart event. Note that shareScreen(), stopScreen() and sendStream() uses the refreshConnection() method to replace the current stream sent to Peers.

0.6.2: Bug-fixes for shareScreen() invoking multiple times

01 Oct 18:40
Compare
Choose a tag to compare

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() and stopScreen() would handle the MediaStream.stop() deprecation method with version M47 and use MediaStreamTrack.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

30 Sep 15:11
Compare
Choose a tag to compare

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 of getPeers() when retrieving the list unprivileged Peers in a room.
  • Added a new attribute called INTRODUCE_STATE for identifying the states of introducePeer() 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 of getPeers().
  • Added a new event called introduceStateChange that identifies the state of introducePeer().

Improvements

Documentation / Testing
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 parameter stopUserMedia that by default is true. It is a flag that tells Skylink not to stop self Stream when leaving the room.
  • Added a new configuration setting in init() called forceTURNSSL that causes any TURN server connections to use port 443 SSL connections always. If turns: protocol is supported, it will use the turns: protocol.
  • Added a new configuration setting in init() called forceTURN that forces TURN server connection always. This will reset configuration settings for enableSTUNServer and enableTURNServer.
  • Added a new configuration setting in init() called usePublicSTUN 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 called ALL 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 and OVER_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 in readyStateChange event to identify which room is the connection information retrieved for.
  • Fixed callback function with consistent payloads in init(), joinRoom() and leaveRoom().
  • Added more errors in callback function for init() when XMLHttpRequest fails and joinRoom() when init() or getUserMedia() 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 and config.audio.optional settings in method getUserMedia() for advanced developers familiar with the navigator.getUserMedia() API. This is available in methods joinRoom() and sendStream() as well.
  • peerInfo video information should contain a flag called screenshare 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 parameter enableAudio that by default is true. It is a flag that tells Skylink if the screensharing stream should contain audio or not.
  • mediaAccessError, mediaAccessStopped, streamEnded, streamMuted should contain the isScreensharing flag that indicates if Stream is a screensharing stream or not.
  • Fixed callback function with consistent payloads in shareScreen(), getUserMedia() and sendStream().
Peer
  • Added a new room information in the peerInfo data (or the returned data in getPeerInfo()) that would display the current room that the Peer is connected to.
  • Added a new agent.os information in the peerInfo data (or the returned data in getPeerInfo()) that would display the operating system (or platform) that the PeerConnection peer is on.
  • Added refreshConnection() and shareScreen() functionality for MCU connection. refreshConnection() would enable self to leave and join the room again.
  • Fixed callback function with consistent payloads in refreshConnection(), getPeers().
Data
  • Added a new method called sendURLData() that allow developers to send base64 encoded data URL.
  • transferInfo information should contain a flag called isPrivate that indicates if Data Transfer is a targeted transfer or a broadcasted transfer.
  • transferInfo information should contain a string called dataType that indicates if Data Transfer data is a "blob" for Blob type of transfers sent using sendBlobData() or a "dataURL" for data URL type of transfers using sendURLData().
  • 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 in sendBlobData(), 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 trigger incomingStream 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 the defaultRoom provided in the init() options.
  • Connection should not be interrupted with streamEnded event.
  • Configuring TURN_TRANSPORT.UDP or TURN_TRANSPORT.TCP in init() should not break connection.
Peer
  • getPeerInfo() should return exact Stream information when information has already been updated.
Stream
  • enableVideo() and enableAudio() should not work if no Stream is present.
  • muteStream() should update the audioMuted and videoMuted status correctly. This causes the enableVideo() and enableAudio() bugs.

Things that Developers should take note of

Changes required to make when integrating 0.6.1
  • respondBlobRequest would take in a mandatory transferId field in order to respond to the incoming transfers.
  • cancelBlobRequest would take in a mandatory transferId field and not `tra...
Read more

0.6.0: skylink.shareSceen() for Chrome/FF/IE/Safari

11 Jun 05:28
Compare
Choose a tag to compare

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

13 May 03:48
Compare
Choose a tag to compare

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

05 Mar 00:02
Compare
Choose a tag to compare

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.