Link to Github: https://github.com/Temasys/SkylinkJS/releases/tag/0.6.12
Dependencies
Socket.io 1.4.4
AdapterJS 0.13.3
CDN links (gzipped)
Minified library: //cdn.temasys.com.sg/skylink/skylinkjs/0.6.12/skylink.min.js
Debug library: //cdn.temasys.com.sg/skylink/skylinkjs/0.6.12/skylink.debug.js
Minified with all dependencies: //cdn.temasys.com.sg/skylink/skylinkjs/0.6.12/skylink.complete.min.js
Debug with all dependencies: //cdn.temasys.com.sg/skylink/skylinkjs/0.6.12/skylink.complete.js
API Documentation
https://cdn.temasys.com.sg/skylink/skylinkjs/0.6.12/doc/classes/Skylink.html
Bug-fixes
Stream
- Prevent peerUpdated event from triggering when user is not in the room when invoking getUserMedia() function.
Peer
- Fixes to allow Chrome 50 / Opera 37 to connect with IE / Safari with plugin versions 0.8.866 and 0.8.869.
- Fixes to allow Safari / IE with plugin version 0.8.869 to generate "relay" (TURN) candidates with hotfix in AdapterJS 0.13.3
- Fixes to force set the offerer as the one with the highest weight. This may prevent some connection issues with clearer indication. This should work with Android, iOS and C++ SDKs.
- Fixes to prevent restarts with Android, iOS and C++ SDKs to prevent errors due to lack of re-negotiation support for the moment.
- Fixes to allow disabling of trickle ICE during a MCU connection when enableIceTrickle option is set to false in init() function.
- Fixes to allow MCU connection with Safari / IE.
- Removed internal logic of disabling trickle ICE when reconnecting again after iceConnectionState event goes to ICE_CONNECTION_STATE.TRICKLE_FAILED the 3rd time.
Documentation
- Fixed documentation font styling and missing icons.
Improvements
Peer
- Improved MCU video quality for Chrome to Chrome / IE / Safari / Opera browsers.
Room
- Allow filtering of candidates and enforce TURN connections with forceTURN option in init() function.
Demo
- Updated demo/app to only allow dataChannelState to be reflected for peer datachannels with DATA_CHANNEL_TYPE.MESSAGING only.
Things that Developers should take note of
Android, iOS and C++ SDK interoperability
- Screensharing: There are noted issues where if user joins the room when Chrome / Firefox / IE / Safari has a screensharing session, the user will receive the screensharing stream. We may resolve this in the future releases. Note that shareScreen(), sendStream() or refreshConnection() functions will not currently work for peers connecting from these SDKs agents.
- File sharing: There is a bug that causes transfers not to work. We will fix this issue in the future releases. Note that sendURLData() function is not supported with these SDKs agents as well.
Forcing TURN connections
Note that when you set forceTURN option to true in init() function, it will filter all the ICE candidates to ensure "relay" candidate TURN connections. If you do not have TURN enabled for the Application Key used, the connections will NOT work.
However, when connecting Firefox and Safari / IE, issues were noted where "peerreflexive" remote candidates were being selected for connection in Firefox's end. This can be monitored in about:webrtc url in Firefox browser. This occurs occasionally with plugin versions 0.8.869 and below and the plugin team is investigating this issue on their end.
Removal of internal logic that disables trickle ICE after 3rd failed trickle ICE reconnection attempt
As of now, iceConnectionState event will always trigger the payload state with ICE_CONNECTION_STATE.TRICKLE_FAILED after each time state ICE_CONNECTION_STATE.FAILED is triggered and enableIceTrickle options is set to true in the init() function, which by default, the option is true when not configured in the init() function.
Previously, disabling of trickle ICE will work due to reconnection logic of destroying and re-creating the peer connection. But as implementations evolves, using re-negotiation as a method of reconnection would be an ideal way of reconnecting a connection.
This internal logic was no longer working since the 0.6.6 release.
Although implementing ICE restarts in the future would allows us to gather new ICE candidates with new ICE credentials, which makes disabling of trickle ICE work, we may not be implementing this logic anytime soon since it might not be a requirement as of this moment.