Skylink Class   Defined in: source/template/header.js:132      Available since 0.5.0


Prerequisites on using Skylink

Before using any Skylink functionalities, you will need to authenticate your App Key using the init() method.

To manage or create App Keys, you may access the Skylink Developer Portal here.

To view the list of supported browsers, visit the list here.

Here are some articles to help you get started:

Here are some demos you may use to aid your development:

You may see the example below in the Constructor tab to have a general idea how event subscription and the ordering of init() and joinRoom() methods should be called.

If you have any issues, you may find answers to your questions in the FAQ section on our support portal, asks questions, request features or raise bug tickets as well.

If you would like to contribute to our SkylinkJS codebase, see the contributing README.

See License (Apache 2.0)




  Skylink ()   _ACKProtocolHandler   _addIceCandidateFromQueue   _addIceCandidateToQueue   _addLocalMediaStreams   _addPeer   _addSDPSsrcFirefoxAnswer   _addSDPStereo   _answerHandler   _approachEventHandler   _assembleDataURL   _base64ToBlob   _blobToBase64   _byeHandler   _CANCELProtocolHandler   _candidateHandler   _chunkBlobData   _chunkDataURL   _clearAllStoredLogsFn   _clearDataChannelTimeout   _closeChannel   _closeDataChannel   _condition   _createDataChannel   _createPeerConnection   _createSocket   _dataChannelProtocolHandler   _DATAProtocolHandler   _doAnswer   _doOffer   _enterHandler   _ERRORProtocolHandler   _getStoredLogsFn   _getUserInfo   _initSelectedRoom   _inRoomHandler   _introduceErrorEventHandler   _loadInfo   _logFn   _MESSAGEProtocolHandler   _muteAudioEventHandler   _muteStreams   _muteVideoEventHandler   _offerHandler   _onAddIceCandidateFailure   _onAddIceCandidateSuccess   _onIceCandidate   _onRemoteStreamAdded   _onStreamAccessError   _onStreamAccessSuccess   _openChannel   _parseInfo   _parseStreamSettings   _peerListEventHandler   _printAllStoredLogsFn   _privateMessageHandler   _processingSingleMessage   _processSigMessage   _publicMessageHandler   _redirectHandler   _refreshPeerConnection   _removePeer   _removeSDPFirefoxH264Pref   _requestServerInfo   _restartHandler   _restartMCUConnection   _restartPeerConnection   _roomLockEventHandler   _sendBlobDataToPeer   _sendChannelMessage   _sendDataChannelMessage   _setDataChannelTimeout   _setIceServers   _setLocalAndSendMessage   _setSDPAudioCodec   _setSDPBitrate   _setSDPVideoCodec   _setSDPVideoResolution   _startDataTransfer   _startPeerConnectionHealthCheck   _stopPeerConnectionHealthCheck   _stopStreams   _streamEventHandler   _throttle   _trigger   _updateUserEventHandler   _wait   _waitForOpenChannel   _welcomeHandler   _WRQProtocolHandler   acceptDataTransfer   cancelBlobTransfer deprecated   cancelDataTransfer   disableAudio deprecated   disableVideo deprecated   enableAudio deprecated   enableVideo deprecated   generateUUID   getConnectionStatus   getPeerInfo   getPeers   getUserData   getUserMedia   init   introducePeer   joinRoom   leaveRoom   lockRoom   muteStream   off   on   once   refreshConnection   respondBlobRequest deprecated   sendBlobData   sendMessage   sendP2PMessage   sendStream   sendURLData   setDebugMode   setLogLevel   setUserData   shareScreen   stopScreen   stopStream   unlockRoom   SkylinkLogs   SkylinkLogs.clearAllLogs   SkylinkLogs.getLogs   SkylinkLogs.printAllLogs   _appKey   _appKeyOwner   _audioFallback   _autoIntroduce   _channelOpen   _CHUNK_DATAURL_SIZE   _CHUNK_FILE_SIZE   _dataChannels   _dataTransfersTimeout   _DC_PROTOCOL_TYPE   _defaultRoom   _downloadDataSessions   _downloadDataTransfers   _enableDataChannel   _enableDebugMode   _enableDebugStack   _enableDebugTrace   _enableIceTrickle   _enableSTUN   _enableTURN   _EVENTS   _forceSSL   _forceTURN   _forceTURNSSL   _gatheredCandidates   _groupMessageList   _hasMCU   _hasMCU   _ICEConnectionFailures   _inRoom   _INTEROP_MULTI_TRANSFERS   _key   _lastRestart   _LOG_KEY   _LOG_LEVELS   _logLevel   _MOZ_CHUNK_FILE_SIZE   _onceEvents   _path   _peerCandidatesQueue   _peerConnectionHealth   _peerConnectionHealthTimers   _peerConnections   _peerInformations   _peerList   _peerMessagesStamps   _peerPriorityWeight   _readyState   _receiveOnly   _retryCount   _room   _roomCredentials   _roomDuration   _roomLocked   _roomServer   _roomStart   _selectedAudioCodec   _selectedRoom   _selectedVideoCodec   _serverRegion   _SIG_MESSAGE_TYPE   _signalingServer   _signalingServerPort   _signalingServerProtocol   _socket   _socketMessageQueue   _socketMessageTimeout   _socketPorts   _socketSession   _socketTimeout   _socketUseXDR   _storedLogs   _streams   _streamsBandwidthSettings   _streamsDefaultSettings   _streamsMutedSettings   _streamsStoppedCbs   _timestamp   _TRANSFER_DELIMITER   _TURNTransport   _uploadDataSessions   _uploadDataTransfers   _usePublicSTUN   _user   _userData   AUDIO_CODEC   CANDIDATE_GENERATION_STATE   DATA_CHANNEL_STATE   DATA_CHANNEL_TYPE   DATA_TRANSFER_DATA_TYPE   DATA_TRANSFER_SESSION_TYPE   DATA_TRANSFER_STATE   DATA_TRANSFER_TYPE   DT_PROTOCOL_VERSION   GET_CONNECTION_STATUS_STATE   GET_PEERS_STATE   HANDSHAKE_PROGRESS   ICE_CONNECTION_STATE   INTRODUCE_STATE   isPrivileged   log   LOG_LEVEL   MEDIA_ACCESS_FALLBACK_STATE   PEER_CONNECTION_STATE   READY_STATE_CHANGE   READY_STATE_CHANGE_ERROR   REGIONAL_SERVER deprecated   SERVER_PEER_TYPE   SM_PROTOCOL_VERSION   SOCKET_ERROR   SOCKET_FALLBACK   SYSTEM_ACTION   SYSTEM_ACTION_REASON   TURN_TRANSPORT   VERSION   VIDEO_CODEC   VIDEO_RESOLUTION   candidateGenerationState   channelClose   channelError   channelMessage   channelOpen   channelRetry   dataChannelState   dataTransferState   getConnectionStatusStateChange   getPeersStateChange   handshakeProgress   iceConnectionState   incomingData   incomingDataRequest   incomingMessage   incomingStream   introduceStateChange   localMediaMuted   mediaAccessError   mediaAccessFallback   mediaAccessRequired   mediaAccessStopped   mediaAccessSuccess   peerConnectionState   peerJoined   peerLeft   peerRestart   peerUpdated   readyStateChange   roomLock   serverPeerJoined   serverPeerLeft   serverPeerRestart   sessionDisconnect   socketError   streamEnded   streamMuted   systemAction
  Scroll to top

_ACKProtocolHandler

()
private
  Defined in: source/data-transfer.js:1607      Available since 0.5.2

Function that handles the "ACK" data transfer protocol.

Events Sequence:

There is no event sequence for this method.

_addIceCandidateFromQueue

()
private
  Defined in: source/ice-candidate.js:199      Available since 0.5.2

Function that adds all the Peer connection buffered ICE candidates received. This should be called only after the remote session description is received and set.

Events Sequence:

There is no event sequence for this method.

_addIceCandidateToQueue

()
private
  Defined in: source/ice-candidate.js:157      Available since 0.5.2

Function that buffers the Peer connection ICE candidate when received before remote session description is received and set.

Events Sequence:

There is no event sequence for this method.

_addLocalMediaStreams

()
private
  Defined in: source/stream-media.js:1797      Available since 0.5.2

Function that sets User's Stream to send to Peer connection. Priority for shareScreen() Stream over getUserMedia() Stream.

Events Sequence:

There is no event sequence for this method.

_addPeer

()
private
  Defined in: source/peer-connection.js:760      Available since 0.5.4

Function that starts the Peer connection session. Remember to remove previous method of reconnection (re-creating the Peer connection - destroy and create connection).

Events Sequence:

There is no event sequence for this method.

_addSDPSsrcFirefoxAnswer

()
private
  Defined in: source/stream-sdp.js:374      Available since 0.6.6

Function that modifies the SessionDescription string to set with the correct MediaStream ID and MediaStreamTrack IDs that is not provided from Firefox connection to Chromium connection.

Events Sequence:

There is no event sequence for this method.

_addSDPStereo

()
private
  Defined in: source/stream-sdp.js:23      Available since 0.5.10

Function that modifies the SessionDescription string to enable OPUS stereo.

Events Sequence:

There is no event sequence for this method.

_answerHandler

()
private
  Defined in: source/socket-message.js:1182      Available since 0.5.1

Function that handles the "answer" socket message received. See confluence docs for the "answer" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_approachEventHandler

()
private
  Defined in: source/socket-message.js:352      Available since 0.6.1

Function that handles the "approach" socket message received. See confluence docs for the "approach" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_assembleDataURL

()
private
  Defined in: source/data-process.js:159      Available since 0.6.1

Function that assembles the data string chunks into a large string.

Events Sequence:

There is no event sequence for this method.

_base64ToBlob

()
private
  Defined in: source/data-process.js:56      Available since 0.1.0

Function that converts Base64 string into Blob object. This is referenced from devnull69@stackoverflow.com #6850276.

Events Sequence:

There is no event sequence for this method.

_blobToBase64

()
private
  Defined in: source/data-process.js:76      Available since 0.1.0

Function that converts a Blob object into Base64 string.

Events Sequence:

There is no event sequence for this method.

_byeHandler

()
private
  Defined in: source/socket-message.js:587      Available since 0.1.0

Function that handles the "bye" socket message received. See confluence docs for the "bye" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_CANCELProtocolHandler

()
private
  Defined in: source/data-transfer.js:1814      Available since 0.5.0

Function that handles the "CANCEL" data transfer protocol.

Events Sequence:

There is no event sequence for this method.

_candidateHandler

()
private
  Defined in: source/socket-message.js:1090      Available since 0.5.1

Function that handles the "candidate" socket message received. See confluence docs for the "candidate" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_chunkBlobData

()
private
  Defined in: source/data-process.js:93      Available since 0.5.2

Function that chunks Blob object based on the data chunk size provided. If provided Blob object size is lesser than or equals to the chunk size, it should return an array of length of 1.

Events Sequence:

There is no event sequence for this method.

_chunkDataURL

()
private
  Defined in: source/data-process.js:125      Available since 0.6.1

Function that chunks large string into string chunks based on the data chunk size provided. If provided string length is lesser than or equals to the chunk size, it should return an array of length of 1.

Events Sequence:

There is no event sequence for this method.

_clearAllStoredLogsFn

()
private scoped
  Defined in: source/skylink-debug.js:138      Available since 0.5.5

Function that clears the stored logs.

Events Sequence:

There is no event sequence for this method.

_clearDataChannelTimeout

()
private
  Defined in: source/data-transfer.js:1252      Available since 0.5.0

Function that stops and clears the data transfer "wait-for-response" timeout.

Events Sequence:

There is no event sequence for this method.

_closeChannel

()
private
  Defined in: source/socket-channel.js:512      Available since 0.5.5

Function that stops the socket connection to the Signaling.

Events Sequence:

There is no event sequence for this method.

_closeDataChannel

()
private
  Defined in: source/data-channel.js:304      Available since 0.1.0

Function that stops the Datachannel connection and removes object references.

Events Sequence:

There is no event sequence for this method.

_condition

()
private
  Defined in: source/skylink-events.js:881      Available since 0.5.5

Function that checks if the current state condition is met before subscribing event handler to wait for condition to be fulfilled.

Events Sequence:

There is no event sequence for this method.

_createDataChannel

()
private
  Defined in: source/data-channel.js:81      Available since 0.5.5

Function that starts a Datachannel connection with Peer.

Events Sequence:

There is no event sequence for this method.

_createPeerConnection

()
private
  Defined in: source/peer-connection.js:1004      Available since 0.5.1

Function that creates the Peer connection.

Events Sequence:

There is no event sequence for this method.

_createSocket

()
private
  Defined in: source/socket-channel.js:306      Available since 0.5.10

Function that creates and opens a socket connection to the Signaling.

Events Sequence:

There is no event sequence for this method.

_dataChannelProtocolHandler

()
private
  Defined in: source/data-transfer.js:1486      Available since 0.5.2

Function that handles the data received from Datachannel and routes to the relevant data transfer protocol handler.

Events Sequence:

There is no event sequence for this method.

_DATAProtocolHandler

()
private
  Defined in: source/data-transfer.js:1893      Available since 0.5.5

Function that handles the data transfer chunk received.

Events Sequence:

There is no event sequence for this method.

_doAnswer

()
private
  Defined in: source/peer-handshake.js:169      Available since 0.1.0

Function that creates the Peer connection answer session description. This comes after receiving and setting the offer session description.

Events Sequence:

There is no event sequence for this method.

_doOffer

()
private
  Defined in: source/peer-handshake.js:71      Available since 0.5.2

Function that creates the Peer connection offer session description.

Events Sequence:

There is no event sequence for this method.

_enterHandler

()
private
  Defined in: source/socket-message.js:709      Available since 0.5.1

Function that handles the "enter" socket message received. See confluence docs for the "enter" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_ERRORProtocolHandler

()
private
  Defined in: source/data-transfer.js:1774      Available since 0.5.2

Function that handles the "ERROR" data transfer protocol.

Events Sequence:

There is no event sequence for this method.

_getStoredLogsFn

()
private scoped
  Defined in: source/skylink-debug.js:117      Available since 0.5.5

Function that gets the stored logs.

Events Sequence:

There is no event sequence for this method.

_getUserInfo

()
private
  Defined in: source/peer-data.js:191      Available since 0.4.0

Function that returns the User session information to be sent to Peers.

Events Sequence:

There is no event sequence for this method.

_initSelectedRoom

()
private
  Defined in: source/room-init.js:1008      Available since 0.5.5

Starts initialising for Room credentials for room name provided in joinRoom() method.

Events Sequence:

There is no event sequence for this method.

_inRoomHandler

()
private
  Defined in: source/socket-message.js:652      Available since 0.1.0

Function that handles the "inRoom" socket message received. See confluence docs for the "inRoom" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_introduceErrorEventHandler

()
private
  Defined in: source/socket-message.js:336      Available since 0.6.1

Function that handles the "introduceError" socket message received. See confluence docs for the "introduceError" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_loadInfo

()
private
  Defined in: source/room-init.js:917      Available since 0.5.2

Loads and checks the dependencies if they are loaded correctly.

Events Sequence:

There is no event sequence for this method.

_logFn

()
private scoped
  Defined in: source/skylink-debug.js:246      Available since 0.5.5

Function that handles the logs received and prints in the Web Console interface according to the log level set.

Events Sequence:

There is no event sequence for this method.

_MESSAGEProtocolHandler

()
private
  Defined in: source/data-transfer.js:1754      Available since 0.5.2

Function that handles the "MESSAGE" data transfer protocol.

Events Sequence:

There is no event sequence for this method.

_muteAudioEventHandler

()
private
  Defined in: source/socket-message.js:459      Available since 0.2.0

Function that handles the "muteAudioEvent" socket message received. See confluence docs for the "muteAudioEvent" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_muteStreams

()
private
  Defined in: source/stream-media.js:1340      Available since 0.6.15

Function that handles the muting of Stream audio and video tracks.

Events Sequence:

There is no event sequence for this method.

_muteVideoEventHandler

()
private
  Defined in: source/socket-message.js:489      Available since 0.2.0

Function that handles the "muteVideoEvent" socket message received. See confluence docs for the "muteVideoEvent" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_offerHandler

()
private
  Defined in: source/socket-message.js:997      Available since 0.5.1

Function that handles the "offer" socket message received. See confluence docs for the "offer" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_onAddIceCandidateFailure

()
private
  Defined in: source/ice-candidate.js:186      Available since 0.5.9

Function that handles when the Peer connection received ICE candidate has failed adding or processing. Separated in a function to prevent jshint errors.

Events Sequence:

There is no event sequence for this method.

_onAddIceCandidateSuccess

()
private
  Defined in: source/ice-candidate.js:173      Available since 0.5.9

Function that handles when the Peer connection received ICE candidate has been added or processed successfully. Separated in a function to prevent jshint errors.

Events Sequence:

There is no event sequence for this method.

_onIceCandidate

()
private
  Defined in: source/ice-candidate.js:55      Available since 0.1.0

Function that handles the Peer connection gathered ICE candidate to be sent.

Events Sequence:

There is no event sequence for this method.

_onRemoteStreamAdded

()
private
  Defined in: source/stream-media.js:1763      Available since 0.5.2

Function that handles the RTCPeerConnection.onaddstream remote MediaStream received.

Events Sequence:

There is no event sequence for this method.

_onStreamAccessError

()
private
  Defined in: source/stream-media.js:1723      Available since 0.6.15

Function that handles the native navigator.getUserMedia() API failure callback result.

Events Sequence:

There is no event sequence for this method.

_onStreamAccessSuccess

()
private
  Defined in: source/stream-media.js:1591      Available since 0.3.0

Function that handles the native navigator.getUserMedia() API success callback result.

Events Sequence:

There is no event sequence for this method.

_openChannel

()
private
  Defined in: source/socket-channel.js:470      Available since 0.5.5

Function that starts the socket connection to the Signaling. This starts creating the socket connection and called at first not when requiring to fallback.

Events Sequence:

There is no event sequence for this method.

_parseInfo

()
private
  Defined in: source/room-init.js:844      Available since 0.5.2

Parses the Room credentials information retrieved from API server.

Events Sequence:

There is no event sequence for this method.

_parseStreamSettings

()
private
  Defined in: source/stream-media.js:1459      Available since 0.6.15

Function that parses the getUserMedia() settings provided.

Events Sequence:

There is no event sequence for this method.

_peerListEventHandler

()
private
  Defined in: source/socket-message.js:320      Available since 0.6.1

Function that handles the "peerList" socket message received. See confluence docs for the "peerList" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_printAllStoredLogsFn

()
private scoped
  Defined in: source/skylink-debug.js:150      Available since 0.5.5

Function that prints in the Web Console interface the stored logs.

Events Sequence:

There is no event sequence for this method.

_privateMessageHandler

()
private
  Defined in: source/socket-message.js:608      Available since 0.4.0

Function that handles the "private" socket message received. See confluence docs for the "private" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_processingSingleMessage

()
private
  Defined in: source/socket-message.js:234      Available since 0.1.0

Function that handles and processes the socket message received.

Events Sequence:

There is no event sequence for this method.

_processSigMessage

()
private
  Defined in: source/socket-message.js:215      Available since 0.1.0

Function that process and parses the socket message string received from the Signaling.

Events Sequence:

There is no event sequence for this method.

_publicMessageHandler

()
private
  Defined in: source/socket-message.js:630      Available since 0.4.0

Function that handles the "public" socket message received. See confluence docs for the "public" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_redirectHandler

()
private
  Defined in: source/socket-message.js:383      Available since 0.5.1

Function that handles the "redirect" socket message received. See confluence docs for the "redirect" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_refreshPeerConnection

()
private
  Defined in: source/peer-connection.js:246      Available since 0.6.15

Function that refresh connections.

Events Sequence:

There is no event sequence for this method.

_removePeer

()
private
  Defined in: source/peer-connection.js:943      Available since 0.5.5

Function that ends the Peer connection session.

Events Sequence:

There is no event sequence for this method.

_removeSDPFirefoxH264Pref

()
private
  Defined in: source/stream-sdp.js:355      Available since 0.5.2

Function that modifies the SessionDescription string to remove the experimental H264 Firefox flag that is breaking connections. To evaluate removal of this change once we roll out H264 codec interop.

Events Sequence:

There is no event sequence for this method.

_requestServerInfo

()
private
  Defined in: source/room-init.js:770      Available since 0.5.2

Starts retrieving Room credentials information from API server.

Events Sequence:

There is no event sequence for this method.

_restartHandler

()
private
  Defined in: source/socket-message.js:782      Available since 0.5.6

Function that handles the "restart" socket message received. See confluence docs for the "restart" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_restartMCUConnection

()
private
  Defined in: source/peer-connection.js:1205      Available since 0.6.1

Function that handles the _restartPeerConnection scenario for MCU enabled Peer connections. This is implemented currently by making the user leave and join the Room again. The Peer ID will not stay the same though.

Events Sequence:

There is no event sequence for this method.

_restartPeerConnection

()
private
  Defined in: source/peer-connection.js:812      Available since 0.5.8

Function that re-negotiates a Peer connection. We currently do not implement the ICE restart functionality. Remember to remove previous method of reconnection (re-creating the Peer connection - destroy and create connection).

Events Sequence:

There is no event sequence for this method.

_roomLockEventHandler

()
private
  Defined in: source/socket-message.js:443      Available since 0.2.0

Function that handles the "roomLockEvent" socket message received. See confluence docs for the "roomLockEvent" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_sendBlobDataToPeer

()
private
  Defined in: source/data-transfer.js:1270      Available since 0.5.5

Function that starts a data transfer to Peer. This will open a new data type of Datachannel connection with Peer if simultaneous data transfers is supported by Peer.

Events Sequence:

There is no event sequence for this method.

_sendChannelMessage

()
private
  Defined in: source/socket-channel.js:185      Available since 0.5.8

Function that sends a socket message over the socket connection to the Signaling.

Events Sequence:

There is no event sequence for this method.

_sendDataChannelMessage

()
private
  Defined in: source/data-channel.js:246      Available since 0.5.2

Function that sends data over the Datachannel connection.

Events Sequence:

There is no event sequence for this method.

_setDataChannelTimeout

()
private
  Defined in: source/data-transfer.js:1206      Available since 0.5.0

Function that sets the data transfer "wait-for-response" timeout. When there is not response after timeout, the data transfer will be terminated.

Events Sequence:

There is no event sequence for this method.

_setIceServers

()
private
  Defined in: source/ice-connection.js:169      Available since 0.5.4

Function that filters and configures the ICE servers received from Signaling based on the init() configuration and returns the updated list of ICE servers to be used when constructing Peer connection.

Events Sequence:

There is no event sequence for this method.

_setLocalAndSendMessage

()
private
  Defined in: source/peer-handshake.js:320      Available since 0.5.2

Function that sets the local session description and sends to Peer. If trickle ICE is disabled, the local session description will be sent after ICE gathering has been completed.

Events Sequence:

There is no event sequence for this method.

_setSDPAudioCodec

()
private
  Defined in: source/stream-sdp.js:303      Available since 0.5.2

Function that modifies the SessionDescription string to set the preferred sending audio codec.

Events Sequence:

There is no event sequence for this method.

_setSDPBitrate

()
private
  Defined in: source/stream-sdp.js:163      Available since 0.5.10

Function that modifies the SessionDescription string to set the sending bandwidth. Setting this may not necessarily work in Firefox.

Events Sequence:

There is no event sequence for this method.

_setSDPVideoCodec

()
private
  Defined in: source/stream-sdp.js:250      Available since 0.5.2

Function that modifies the SessionDescription string to set the preferred sending video codec.

Events Sequence:

There is no event sequence for this method.

_setSDPVideoResolution

()
private
  Defined in: source/stream-sdp.js:78      Available since 0.5.10

Function that modifies the SessionDescription string to set the video resolution. This is not even supported in the specs, and we should re-evalute it to be removed.

Events Sequence:

There is no event sequence for this method.

_startDataTransfer

()
private
  Defined in: source/data-transfer.js:2118      Available since 0.6.1

Function that start the data transfer with the list of targeted Peer IDs provided. At this stage, it will open a new Datachannel connection if simultaneous data transfers is supported by Peer, or it will using the messaging type Datachannel connection. Note that 1 data transfer can occur at a time in 1 Datachannel connection.

Events Sequence:

There is no event sequence for this method.

_startPeerConnectionHealthCheck

()
private
  Defined in: source/peer-handshake.js:209      Available since 0.5.5

Function that starts the Peer connection health timer. To count as a "healthy" successful established Peer connection, the ICE connection state has to be "connected" or "completed", messaging Datachannel type state has to be "opened" (if Datachannel is enabled) and Signaling state has to be "stable". Should consider dropping of counting messaging Datachannel type being opened as it should not involve the actual Peer connection for media (audio/video) streaming.

Events Sequence:

There is no event sequence for this method.

_stopPeerConnectionHealthCheck

()
private
  Defined in: source/peer-handshake.js:295      Available since 0.5.5

Function that stops the Peer connection health timer. This happens when Peer connection has been successfully established or when Peer leaves the Room.

Events Sequence:

There is no event sequence for this method.

_stopStreams

()
private
  Defined in: source/stream-media.js:1387      Available since 0.6.15

Function that handles stopping the Stream streaming.

Events Sequence:

There is no event sequence for this method.

_streamEventHandler

()
private
  Defined in: source/socket-message.js:520      Available since 0.2.0

Function that handles the "stream" socket message received. See confluence docs for the "stream" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_throttle

()
private
  Defined in: source/skylink-events.js:945      Available since 0.5.8

Function that throttles a method function to prevent multiple invokes over a specified amount of time. Returns a function to be invoked ._throttle(fn, 1000)() to make throttling functionality work.

Events Sequence:

There is no event sequence for this method.

_trigger

()
private
  Defined in: source/skylink-events.js:827      Available since 0.1.0

Function that triggers an event. The rest of the parameters after the eventName parameter is considered as the event parameter payloads.

Events Sequence:

There is no event sequence for this method.

_updateUserEventHandler

()
private
  Defined in: source/socket-message.js:415      Available since 0.2.0

Function that handles the "updateUserEvent" socket message received. See confluence docs for the "updateUserEvent" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_wait

()
private
  Defined in: source/skylink-events.js:907      Available since 0.5.5

Function that starts an interval check to wait for a condition to be resolved.

Events Sequence:

There is no event sequence for this method.

_waitForOpenChannel

()
private
  Defined in: source/room-connection.js:706      Available since 0.5.5

Function that waits for Socket connection to Signaling to be opened.

Events Sequence:

There is no event sequence for this method.

_welcomeHandler

()
private
  Defined in: source/socket-message.js:897      Available since 0.5.4

Function that handles the "welcome" socket message received. See confluence docs for the "welcome" expected properties to be received based on the current SM_PROTOCOL_VERSION.

Events Sequence:

There is no event sequence for this method.

_WRQProtocolHandler

()
private
  Defined in: source/data-transfer.js:1553      Available since 0.5.2

Function that handles the "WRQ" data transfer protocol.

Events Sequence:

There is no event sequence for this method.

acceptDataTransfer

( peerId ,   transferId ,   [accept=false] ,   )
  Defined in: source/data-transfer.js:585      Available since 0.6.1

Function that accepts or rejects an upload data transfer request from Peer to User.

Example:

        

// Example 1: Accept Peer upload data transfer request skylinkDemo.on("incomingDataRequest", function (transferId, peerId, transferInfo, isSelf) { if (!isSelf) { skylinkDemo.acceptDataTransfer(peerId, transferId, true); } });

// Example 2: Reject Peer upload data transfer request skylinkDemo.on("incomingDataRequest", function (transferId, peerId, transferInfo, isSelf) { if (!isSelf) { skylinkDemo.acceptDataTransfer(peerId, transferId, false); } });

Events Sequence:

Event sequence follows sendBlobData() method after acceptDataTransfer() method is invoked.

Parameters:

  • peerId {String}

    The Peer ID.

  • transferId {String}

    The data transfer ID.

  • accept {Boolean} Optional
    DEFAULT: false

    The flag if User accepts the upload data transfer request from Peer.


cancelBlobTransfer

()
deprecated
  Defined in: source/data-transfer.js:682      Available since 0.5.7

Deprecation Warning! This method has been deprecated, please use method_cancelDataTransfer() method instead.
Function that terminates a currently uploading / downloading data transfer from / to Peer. Parameter signature follows cancelDataTransfer() method.

Example:

        

// Example 1: Cancel Peer data transfer var transferSessions = {};

skylinkDemo.on("dataTransferState", function (state, transferId, peerId) { if ([skylinkDemo.DATA_TRANSFER_STATE.DOWNLOAD_STARTED, skylinkDemo.DATA_TRANSFER_STATE.UPLOAD_STARTED].indexOf(state) > -1) { if (!Array.isArray(transferSessions[transferId])) { transferSessions[transferId] = []; } transferSessions[transferId].push(peerId); } else { transferSessions[transferId].splice(transferSessions[transferId].indexOf(peerId), 1); } });

function cancelTransfer (peerId, transferId) { skylinkDemo.cancelBlobTransfer(peerId, transferId); }

Events Sequence:

Event sequence follows sendBlobData() method after cancelDataTransfer() method is invoked.

cancelDataTransfer

( peerId ,   transferId ,   )
  Defined in: source/data-transfer.js:719      Available since 0.6.1

Function that terminates a currently uploading / downloading data transfer from / to Peer.

Example:

        

// Example 1: Cancel Peer data transfer var transferSessions = {};

skylinkDemo.on("dataTransferState", function (state, transferId, peerId) { if ([skylinkDemo.DATA_TRANSFER_STATE.DOWNLOAD_STARTED, skylinkDemo.DATA_TRANSFER_STATE.UPLOAD_STARTED].indexOf(state) > -1) { if (!Array.isArray(transferSessions[transferId])) { transferSessions[transferId] = []; } transferSessions[transferId].push(peerId); } else { transferSessions[transferId].splice(transferSessions[transferId].indexOf(peerId), 1); } });

function cancelTransfer (peerId, transferId) { skylinkDemo.cancelDataTransfer(peerId, transferId); }

Events Sequence:

Event sequence follows sendBlobData() method after cancelDataTransfer() method is invoked.

Parameters:

  • peerId {String}

    The Peer ID.

  • transferId {String}

    The data transfer ID.


disableAudio

()
deprecated
  Defined in: source/stream-media.js:985      Available since 0.5.5

Deprecation Warning! This method has been deprecated. Use muteStream() method instead.
Function that mutes both getUserMedia() Stream and shareScreen() Stream audio tracks.

Example:

        

function muteAudio () { skylinkDemo.disableAudio(); }

Events Sequence:

  1. Invokes muteStream() method with options.audioMuted value as true and options.videoMuted value with current peerInfo.mediaStatus.videoMuted value. See getPeerInfo() method for more information.

disableVideo

()
deprecated
  Defined in: source/stream-media.js:1039      Available since 0.5.5

Deprecation Warning! This method has been deprecated. Use muteStream() method instead.
Function that mutes both getUserMedia() Stream and shareScreen() Stream video tracks.

Example:

        

function muteVideo () { skylinkDemo.disableVideo(); }

Events Sequence:

  1. Invokes muteStream() method with options.videoMuted value as true and options.audioMuted value with current peerInfo.mediaStatus.audioMuted value. See getPeerInfo() method for more information.

enableAudio

()
deprecated
  Defined in: source/stream-media.js:958      Available since 0.5.5

Deprecation Warning! This method has been deprecated. Use muteStream() method instead.
Function that unmutes both getUserMedia() Stream and shareScreen() Stream audio tracks.

Example:

        

function unmuteAudio () { skylinkDemo.enableAudio(); }

Events Sequence:

  1. Invokes muteStream() method with options.audioMuted value as false and options.videoMuted value with current peerInfo.mediaStatus.videoMuted value. See getPeerInfo() method for more information.

enableVideo

()
deprecated
  Defined in: source/stream-media.js:1012      Available since 0.5.5

Deprecation Warning! This method has been deprecated. Use muteStream() method instead.
Function that unmutes both getUserMedia() Stream and shareScreen() Stream video tracks.

Example:

        

function unmuteVideo () { skylinkDemo.enableVideo(); }

Events Sequence:

  1. Invokes muteStream() method with options.videoMuted value as false and options.audioMuted value with current peerInfo.mediaStatus.audioMuted value. See getPeerInfo() method for more information.

generateUUID

()
  Defined in: source/template/header.js:223      Available since 0.5.9

Function that generates an UUID (Unique ID).

Events Sequence:

There is no event sequence for this method.

Returns:

{String}

Returns a generated UUID (Unique ID).


getConnectionStatus

( [targetPeerId] ,   [callback] ,   )
  Defined in: source/peer-connection.js:344      Available since 0.6.14

Function that retrieves Peer connection bandwidth and ICE connection stats.

Example:

        

// Example 1: Retrieve a Peer connection stats function startBWStatsInterval (peerId) { setInterval(function () { skylinkDemo.getConnectionStatus(peerId, function (error, success) { if (error) return; var sendVideoBytes = success.connectionStats[peerId].video.sending.bytes; var sendAudioBytes = success.connectionStats[peerId].audio.sending.bytes; var recvVideoBytes = success.connectionStats[peerId].video.receiving.bytes; var recvAudioBytes = success.connectionStats[peerId].audio.receiving.bytes; var localCandidate = success.connectionStats[peerId].selectedCandidate.local; var remoteCandidate = success.connectionStats[peerId].selectedCandidate.remote; console.log("Sending audio (" + sendAudioBytes + "bps) video (" + sendVideoBytes + ")"); console.log("Receiving audio (" + recvAudioBytes + "bps) video (" + recvVideoBytes + ")"); console.log("Local candidate: " + localCandidate.ipAddress + ":" + localCandidate.portNumber + "?transport=" + localCandidate.transport + " (type: " + localCandidate.candidateType + ")"); console.log("Remote candidate: " + remoteCandidate.ipAddress + ":" + remoteCandidate.portNumber + "?transport=" + remoteCandidate.transport + " (type: " + remoteCandidate.candidateType + ")"); }); }, 1000); }

// Example 2: Retrieve a list of Peer connection stats function printConnStats (peerId, data) { if (!data.connectionStats[peerId]) return; var sendVideoBytes = data.connectionStats[peerId].video.sending.bytes; var sendAudioBytes = data.connectionStats[peerId].audio.sending.bytes; var recvVideoBytes = data.connectionStats[peerId].video.receiving.bytes; var recvAudioBytes = data.connectionStats[peerId].audio.receiving.bytes; var localCandidate = data.connectionStats[peerId].selectedCandidate.local; var remoteCandidate = data.connectionStats[peerId].selectedCandidate.remote; console.log(peerId + " - Sending audio (" + sendAudioBytes + "bps) video (" + sendVideoBytes + ")"); console.log(peerId + " - Receiving audio (" + recvAudioBytes + "bps) video (" + recvVideoBytes + ")"); console.log(peerId + " - Local candidate: " + localCandidate.ipAddress + ":" + localCandidate.portNumber + "?transport=" + localCandidate.transport + " (type: " + localCandidate.candidateType + ")"); console.log(peerId + " - Remote candidate: " + remoteCandidate.ipAddress + ":" + remoteCandidate.portNumber + "?transport=" + remoteCandidate.transport + " (type: " + remoteCandidate.candidateType + ")"); }

function startBWStatsInterval (peerIdA, peerIdB) { setInterval(function () { skylinkDemo.getConnectionStatus([peerIdA, peerIdB], function (error, success) { if (error) { printConnStats(peerIdA, error.connectionStats); printConnStats(peerIdB, error.connectionStats); } else { printConnStats(peerIdA, success.connectionStats); printConnStats(peerIdB, success.connectionStats); } }); }, 1000); }

// Example 3: Retrieve all Peer connection stats function printConnStats (listOfPeers, data) { listOfPeers.forEach(function (peerId) { if (!data.connectionStats[peerId]) return; var sendVideoBytes = data.connectionStats[peerId].video.sending.bytes; var sendAudioBytes = data.connectionStats[peerId].audio.sending.bytes; var recvVideoBytes = data.connectionStats[peerId].video.receiving.bytes; var recvAudioBytes = data.connectionStats[peerId].audio.receiving.bytes; var localCandidate = data.connectionStats[peerId].selectedCandidate.local; var remoteCandidate = data.connectionStats[peerId].selectedCandidate.remote; console.log(peerId + " - Sending audio (" + sendAudioBytes + "bps) video (" + sendVideoBytes + ")"); console.log(peerId + " - Receiving audio (" + recvAudioBytes + "bps) video (" + recvVideoBytes + ")"); console.log(peerId + " - Local candidate: " + localCandidate.ipAddress + ":" + localCandidate.portNumber + "?transport=" + localCandidate.transport + " (type: " + localCandidate.candidateType + ")"); console.log(peerId + " - Remote candidate: " + remoteCandidate.ipAddress + ":" + remoteCandidate.portNumber + "?transport=" + remoteCandidate.transport + " (type: " + remoteCandidate.candidateType + ")"); }); }

function startBWStatsInterval (peerIdA, peerIdB) { setInterval(function () { skylinkDemo.getConnectionStatus(function (error, success) { if (error) { printConnStats(error.listOfPeers, error.connectionStats); } else { printConnStats(success.listOfPeers, success.connectionStats); } }); }, 1000); }

Events Sequence:

  1. Retrieves Peer connection stats for all targeted Peers.
    1. If Peer connection has closed or does not exists: This can be checked with peerConnectionState event triggering parameter payload state as CLOSED for Peer.
      1. getConnectionStatusStateChange event triggers parameter payload state as RETRIEVE_ERROR.
      2. ABORT and return error.
    2. getConnectionStatusStateChange event triggers parameter payload state as RETRIEVING.
    3. Received response from retrieval.
      1. If retrieval was successful:
        1. getConnectionStatusStateChange event triggers parameter payload state as RETRIEVE_SUCCESS.
      2. Else:
        1. getConnectionStatusStateChange event triggers parameter payload state as RETRIEVE_ERROR.

Parameters:

  • targetPeerId {String | Array} Optional

    The target Peer ID to retrieve connection stats from.

    • When provided as an Array, it will retrieve all connection stats from all the Peer IDs provided.
    • When not provided, it will retrieve all connection stats from the currently connected Peers in the Room.
  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the getConnectionStatusStateChange event triggering state parameter payload value as RETRIEVE_SUCCESS for all Peers targeted for request success. [Rel: Skylink.GET_CONNECTION_STATUS_STATE]

    • error {JSON}

      The error result in request. Defined as null when there are no errors in request

      • listOfPeers {Array}
        The list of Peer IDs targeted.
      • retrievalErrors {JSON}
        The list of Peer connection stats retrieval errors.
      • retrievalErrors.#peerId {Error | String}
        The Peer connection stats retrieval error associated with the Peer ID defined in #peerId property. If #peerId value is "self", it means that it is the error when there are no Peer connections to refresh with.
      • connectionStats {JSON}
        The list of Peer connection stats. These are the Peer connection stats that has been managed to be successfully retrieved.
      • connectionStats.#peerId {JSON}
        The Peer connection stats associated with the Peer ID defined in #peerId property. Object signature matches the stats parameter payload received in the getConnectionStatusStateChange event.
    • success {JSON}

      The success result in request. Defined as null when there are errors in request

      • listOfPeers {Array}
        The list of Peer IDs targeted.
      • connectionStats {JSON}
        The list of Peer connection stats.
      • connectionStats.#peerId {JSON}
        The Peer connection stats associated with the Peer ID defined in #peerId property. Object signature matches the stats parameter payload received in the getConnectionStatusStateChange event.

getPeerInfo

( [peerId] ,   )
  Defined in: source/peer-data.js:127      Available since 0.4.0

Function that returns the User / Peer current session information.

Example:

        

// Example 1: Get Peer current session information var peerPeerInfo = skylinkDemo.getPeerInfo(peerId);

// Example 2: Get User current session information var userPeerInfo = skylinkDemo.getPeerInfo();

Events Sequence:

There is no event sequence for this method.

Parameters:

  • peerId {String} Optional

    The Peer ID to return the current session information from.

    • When not provided or that the Peer ID is does not exists, it will return the User current session information.

Returns:

{JSON}

The User / Peer current session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.


getPeers

( [showAll=false] ,   [callback] ,   )
  Defined in: source/peer-privileged.js:90      Available since 0.6.1

Note that this feature requires "isPrivileged" flag to be enabled for the App Key provided in the init() method, as only Users connecting using the App Key with this flag enabled (which we call privileged Users / Peers) can retrieve the list of Peer IDs from Rooms within the same App space. Read more about privileged App Key feature here.
Function that retrieves the list of Peer IDs from Rooms within the same App space.

Example:

        

// Example 1: Retrieving the un-privileged Peers skylinkDemo.joinRoom(function (jRError, jRSuccess) { if (jRError) return; skylinkDemo.getPeers(function (error, success) { if (error) return; console.log("The list of only un-privileged Peers in the same App space ->", success); }); });

// Example 2: Retrieving the all Peers (privileged or un-privileged) skylinkDemo.joinRoom(function (jRError, jRSuccess) { if (jRError) return; skylinkDemo.getPeers(true, function (error, success) { if (error) return; console.log("The list of all Peers in the same App space ->", success); }); });

Events Sequence:

  1. If App Key provided in the init() method is not a Privileged enabled Key:
    1. ABORT and return error.
  2. Retrieves the list of Peer IDs from Rooms within the same App space.
    1. getPeersStateChange event triggers parameter payload state value as ENQUIRED.
    2. If received list from Signaling server successfully:
      1. getPeersStateChange event triggers parameter payload state value as RECEIVED.

Parameters:

  • showAll {Boolean} Optional
    DEFAULT: false

    The flag if Signaling server should also return the list of privileged Peer IDs. By default, the Signaling server does not include the list of privileged Peer IDs in the return result.

  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the getPeersStateChange event triggering state parameter payload value as RECEIVED for request success. [Rel: Skylink.GET_PEERS_STATE]

    • error {Error | String}

      The error result in request. Defined as null when there are no errors in request Object signature is the getPeers() error when retrieving list of Peer IDs from Rooms within the same App space.

    • success {JSON}

      The success result in request. Defined as null when there are errors in request Object signature matches the peerList parameter payload received in the getPeersStateChange event.


getUserData

( [peerId] ,   )
  Defined in: source/peer-data.js:97      Available since 0.5.10

Function that returns the User / Peer current custom data.

Example:

        

// Example 1: Get Peer current custom data var peerUserData = skylinkDemo.getUserData(peerId);

// Example 2: Get User current custom data var userUserData = skylinkDemo.getUserData();

Events Sequence:

There is no event sequence for this method.

Parameters:

  • peerId {String} Optional

    The Peer ID to return the current custom data from.

    • When not provided or that the Peer ID is does not exists, it will return the User current custom data.

Returns:

{JSON | String}

The User / Peer current custom data.


getUserMedia

( [options] ,   [callback] ,   )
  Defined in: source/stream-media.js:282      Available since 0.5.6

Function that retrieves camera Stream.

Example:

        

// Example 1: Get both audio and video. skylinkDemo.getUserMedia(function (error, success) { if (error) return; attachMediaStream(document.getElementById("my-video"), success); });

// Example 2: Get only audio. skylinkDemo.getUserMedia({ audio: true }, function (error, success) { if (error) return; attachMediaStream(document.getElementById("my-audio"), success); });

// Example 3: Configure resolution for video skylinkDemo.getUserMedia({ audio: true, video: { resolution: skylinkDemo.VIDEO_RESOLUTION.HD } }, function (error, success) { if (error) return; attachMediaStream(document.getElementById("my-video"), success); });

// Example 4: Configure stereo flag for OPUS codec audio (OPUS is always used by default) skylinkDemo.init({ appKey: "xxxxxx", audioCodec: skylinkDemo.AUDIO_CODEC.OPUS }, function (initErr, initSuccess) { skylinkDemo.getUserMedia({ audio: { stereo: true }, video: true }, function (error, success) { if (error) return; attachMediaStream(document.getElementById("my-video"), success); }); });

// Example 5: Configure frameRate for video skylinkDemo.getUserMedia({ audio: true, video: { frameRate: 50 } }, function (error, success) { if (error) return; attachMediaStream(document.getElementById("my-video"), success); });

// Example 6: Configure video and audio based on selected sources. Does not work for Firefox currently. var sources = { audio: [], video: [] };

function selectStream (audioSourceId, videoSourceId) { if (window.webrtcDetectedBrowser === 'firefox') { console.warn("Currently this feature is not supported by Firefox browsers!"); return; } skylinkDemo.getUserMedia({ audio: { optional: [{ sourceId: audioSourceId }] }, video: { optional: [{ sourceId: videoSourceId }] } }, function (error, success) { if (error) return; attachMediaStream(document.getElementById("my-video"), success); }); }

navigator.mediaDevices.enumerateDevices().then(function(devices) { var selectedAudioSourceId = ""; var selectedVideoSourceId = ""; devices.forEach(function(device) { console.log(device.kind + ": " + device.label + " source ID = " + device.deviceId); if (device.kind === "audio") { selectedAudioSourceId = device.deviceId; } else { selectedVideoSourceId = device.deviceId; } }); selectStream(selectedAudioSourceId, selectedVideoSourceId); }).catch(function (error) { console.error("Failed", error); });

Events Sequence:

  1. If options.audio value is false and options.video value is false:
    1. ABORT and return error.
  2. Retrieve camera Stream.
    1. If retrieval was succesful:
      1. If there is any previous getUserMedia() Stream:
        1. Invokes stopStream() method.
      2. If there are missing audio or video tracks requested:
        1. mediaAccessFallback event triggers parameter payload state as FALLBACKED, isScreensharing value as false and isAudioFallback value as false.
      3. Mutes / Unmutes audio and video tracks based on current muted settings in peerInfo.mediaStatus. This can be retrieved with getPeerInfo() method.
      4. mediaAccessSuccess event triggers parameter payload isScreensharing value as false and isAudioFallback value as false.
    2. Else:
      1. If options.audioFallback is enabled in the init() method, options.audio value is true and options.video value is true:
        1. mediaAccessFallback event event triggers parameter payload state as FALLBACKING, isScreensharing value as false and isAudioFallback value as true.
        2. Retrieve camera Stream with audio tracks only.
          1. If retrieval was successful:
            1. If there is any previous getUserMedia() Stream:
              1. Invokes stopStream() method.
            2. mediaAccessFallback event event triggers parameter payload state as FALLBACKED, isScreensharing value as false and isAudioFallback value as true.
            3. Mutes / Unmutes audio and video tracks based on current muted settings in peerInfo.mediaStatus. This can be retrieved with getPeerInfo() method.
            4. mediaAccessSuccess event triggers parameter payload isScreensharing value as false and isAudioFallback value as true.
          2. Else:
            1. mediaAccessError event triggers parameter payload isScreensharing value as false and isAudioFallbackError value as true.
            2. mediaAccessFallback event event triggers parameter payload state as ERROR, isScreensharing value as false and isAudioFallback value as true.
            3. ABORT and return error.
      2. Else:
        1. mediaAccessError event triggers parameter payload isScreensharing value as false and isAudioFallbackError value as false.
        2. ABORT and return error.

Parameters:

  • options {JSON} Optional

    The camera Stream configuration options.

    • When not provided, the value is set to { audio: true, video: true }. To fallback to retrieve audio track only when retrieving of audio and video tracks failed, enable the audioFallback flag in the init() method.
    • useExactConstraints {Boolean} Optional
      DEFAULT: false

      Note that by enabling this flag, exact values will be requested when retrieving camera Stream, but it does not prevent constraints related errors. By default when not enabled, expected mandatory maximum values (or optional values for source ID) will requested to prevent constraints related errors, with an exception for options.video.frameRate option in Safari and IE (plugin-enabled) browsers, where the expected maximum value will not be requested due to the lack of support.
      The flag if getUserMedia() should request for camera Stream to match exact requested values of options.audio.deviceId and options.video.deviceId, options.video.resolution and options.video.frameRate when provided.

    • audio {Boolean | JSON} Optional
      DEFAULT: false

      The audio configuration options.

      • stereo {Boolean} Optional
        DEFAULT: false The flag if stereo band should be configured when encoding audio codec is OPUS for sending audio data.
      • mute {Boolean} Optional
        DEFAULT: false The flag if audio tracks should be muted upon receiving them. Providing the value as false does nothing to peerInfo.mediaStatus.audioMuted, but when provided as true, this sets the peerInfo.mediaStatus.audioMuted value to true and mutes any existing shareScreen() Stream audio tracks as well.
      • optional {Array} Optional
        Note that this may result in constraints related error when options.useExactConstraints value is true. If you are looking to set the requested source ID of the audio track, use options.audio.deviceId instead.
        The navigator.getUserMedia() API audio: { optional [..] } property.
      • deviceId {String} Optional
        Note this is currently not supported in Firefox browsers.
        The audio track source ID of the device to use. The list of available audio source ID can be retrieved by the navigator.mediaDevices.enumerateDevices API.
    • video {Boolean | JSON} Optional
      DEFAULT: false

      The video configuration options.

      • mute {Boolean} Optional
        DEFAULT: false The flag if video tracks should be muted upon receiving them. Providing the value as false does nothing to peerInfo.mediaStatus.videoMuted, but when provided as true, this sets the peerInfo.mediaStatus.videoMuted value to true and mutes any existing shareScreen() Stream video tracks as well.
      • resolution {JSON} Optional
        The video resolution. By default, VGA resolution option is selected when not provided. [Rel: Skylink.VIDEO_RESOLUTION]
      • resolution.width {Number} Optional
        The video resolution width.
      • resolution.height {Number} Optional
        The video resolution height.
      • frameRate {Number} Optional
        The video frameRate per second (fps).
      • optional {Array} Optional
        Note that this may result in constraints related error when options.useExactConstraints value is true. If you are looking to set the requested source ID of the video track, use options.video.deviceId instead.
        The navigator.getUserMedia() API video: { optional [..] } property.
      • deviceId {String} Optional
        Note this is currently not supported in Firefox browsers.
        The video track source ID of the device to use. The list of available video source ID can be retrieved by the navigator.mediaDevices.enumerateDevices API.
  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the mediaAccessSuccess event triggering isScreensharing parameter payload value as false for request success.

    • error {Error | String}

      The error result in request. Defined as null when there are no errors in request Object signature is the getUserMedia() error when retrieving camera Stream.

    • success {MediaStream}

      The success result in request. Defined as null when there are errors in request Object signature is the camera Stream object.


init

( options ,   [callback] ,   )
  Defined in: source/room-init.js:315      Available since 0.5.5

Function that authenticates and initialises App Key used for Room connections.

Example:

        

// Example 1: Using CORS authentication and connection to default Room skylinkDemo(appKey, function (error, success) { if (error) return; skylinkDemo.joinRoom(); // Goes to default Room });

// Example 2: Using CORS authentication and connection to a different Room skylinkDemo(appKey, function (error, success) { skylinkDemo.joinRoom("testxx"); // Goes to "testxx" Room });

// Example 3: Using credentials authentication and connection to only default Room var defaultRoom = "test", startDateTime = (new Date()).toISOString(), duration = 1, // Allows only User session to stay for 1 hour appKeySecret = "xxxxxxx", hash = CryptoJS.HmacSHA1(defaultRoom + "" + duration + "" + startDateTime, appKeySecret); credentials = encodeURIComponent(hash.toString(CryptoJS.enc.Base64));

skylinkDemo({ defaultRoom: defaultRoom, appKey: appKey, credentials: { duration: duration, startDateTime: startDateTime, credentials: credentials } }, function (error, success) { if (error) return; skylinkDemo.joinRoom(); // Goes to default Room (switching to different Room is not allowed for credentials authentication) });

Events Sequence:

  1. If parameter options is not provided:
    1. ABORT and return error.
  2. Checks if dependecies and browser APIs are available.
    1. If AdapterJS is not loaded:
      1. readyStateChange event triggers parameter payload state as ERROR and error.errorCode as ADAPTER_NO_LOADED.
      2. ABORT and return error.
    2. If socket.io-client is not loaded:
      1. readyStateChange event triggers parameter payload state as ERROR and error.errorCode as NO_SOCKET_IO.
      2. ABORT and return error.
    3. If XMLHttpRequest API is not available:
      1. readyStateChange event triggers parameter payload state as ERROR and error.errorCode as NO_XMLHTTPREQUEST_SUPPORT.
      2. ABORT and return error.
    4. If WebRTC is not supported by device:
      1. readyStateChange event triggers parameter payload state as ERROR and error.errorCode as NO_WEBRTC_SUPPORT.
      2. ABORT and return error.
  3. Retrieves Room session token from Auth server.
    1. readyStateChange event triggers parameter payload state as LOADING.
    2. If retrieval was successful:
      1. readyStateChange event triggers parameter payload state as COMPLETED.
    3. Else:
      1. readyStateChange event triggers parameter payload state as ERROR.
      2. ABORT and return error.

Parameters:

  • options {JSON | String}

    The configuration options.

    • When provided as a string, it's configured as options.appKey.
    • appKey {String}

      The App Key. By default, init() uses HTTP CORS authentication. For credentials based authentication, see the options.credentials configuration below. You can know more about the in the authentication methods article here for more details on the various authentication methods. If you are using the Persistent Room feature for scheduled meetings, you will require to use the credential based authentication. See the Persistent Room article here for more information.

    • defaultRoom {String} Optional

      The default Room to connect to when no room parameter is provided in joinRoom() method.

      • When not provided, its value is options.appKey. Note that switching Rooms is not available when using options.credentials based authentication. The Room that User will be connected to is the defaultRoom provided.
    • roomServer {String} Optional

      The Auth server. Note that this is a debugging feature and is only used when instructed for debugging purposes.

    • region {String} Optional

      Deprecation Warning! This option has been deprecated.
      Automatic nearest regional server has been implemented on the platform.
      The Auth server in the various regions to connect to for better connectivity. [Rel: Skylink.REGIONAL_SERVER]

    • enableIceTrickle {Boolean} Optional
      DEFAULT: true

      The flag if Peer connections should trickle ICE for faster connectivity.

    • enableDataChannel {Boolean} Optional
      DEFAULT: true

      The flag if Datachannel connections should be enabled. This is required to be enabled for sendBlobData() method, sendURLData() method and sendP2PMessage() method.

    • enableTURNServer {Boolean} Optional
      DEFAULT: true

      The flag if TURN ICE servers should be used when constructing Peer connections to allow TURN connections when required and enabled for the App Key.

    • enableSTUNServer {Boolean} Optional
      DEFAULT: true

      The flag if STUN ICE servers should be used when constructing Peer connections to allow TURN connections when required.

    • forceTURN {Boolean} Optional
      DEFAULT: false

      The flag if Peer connections should enforce connections over the TURN server. This sets options.enableTURNServer value to true and options.enableSTUNServer value to false. During Peer connections, it filters out non "relay" ICE candidates to ensure that TURN connections is enforced.

    • usePublicSTUN {Boolean} Optional
      DEFAULT: true

      The flag if publicly available STUN ICE servers should be used if options.enableSTUNServer is enabled.

    • TURNServerTransport {Boolean} Optional

      Note that configuring the protocol may not necessarily result in the desired network transports protocol used in the actual TURN network traffic as it depends which protocol the browser selects and connects with. This simply configures the TURN ICE server urls query option when constructing the Peer connection. When all protocols are selected, the ICE servers urls are duplicated with all protocols.
      The option to configure the ?transport= query parameter in TURN ICE servers when constructing a Peer connections.

      • When not provided, its value is ANY. [Rel: Skylink.TURN_TRANSPORT]
    • credentials {JSON} Optional

      The credentials used for authenticating App Key with credentials to retrieve the Room session token used for connection in joinRoom() method. Note that switching of Rooms is not allowed when using credentials based authentication, unless init() is invoked again with a different set of credentials followed by invoking the joinRoom() method.

      • startDateTime {String}
        The credentials User session in Room starting DateTime in ISO 8601 format.
      • duration {Number}
        The credentials User session in Room duration in hours.
      • credentials {String}
        The generated credentials used to authenticate the provided App Key with its "secret" property.
        To generate the credentials:
        1. Concatenate a string that consists of the Room name you provide in the options.defaultRoom, the options.credentials.duration and the options.credentials.startDateTime. Example: var concatStr = defaultRoom + "_" + duration + "_" + startDateTime;
        2. Hash the concatenated string with the App Key "secret" property using SHA-1. Example: var hash = CryptoJS.HmacSHA1(concatStr, appKeySecret); See the CryptoJS.HmacSHA1 library.
        3. Encode the hashed string using base64 Example: var b64Str = hash.toString(CryptoJS.enc.Base64); See the CryptoJS.enc.Base64 library.
        4. Encode the base64 encoded string to replace special characters using UTF-8 encoding. Example: var credentials = encodeURIComponent(base64String); See encodeURIComponent() API.
    • audioFallback {Boolean} Optional
      DEFAULT: false

      The flag if getUserMedia() method should fallback to retrieve only audio Stream when retrieving audio and video Stream fails.

    • forceSSL {Boolean} Optional
      DEFAULT: false

      The flag if HTTPS connections should be enforced during request to Auth server and socket connections to Signaling server when accessing window.location.protocol value is "http:". By default, "https:" protocol connections uses HTTPS connections.

    • audioCodec {String} Optional

      Note that if the audio codec is not supported, the SDK will not configure the local "offer" or "answer" session description to prefer the codec.
      The option to configure the preferred audio codec to use to encode sending audio data when available for Peer connection.

      • When not provided, its value is AUTO. [Rel: Skylink.AUDIO_CODEC]
    • videoCodec {String} Optional

      Note that if the video codec is not supported, the SDK will not configure the local "offer" or "answer" session description to prefer the codec.
      The option to configure the preferred video codec to use to encode sending video data when available for Peer connection.

      • When not provided, its value is AUTO. [Rel: Skylink.VIDEO_CODEC]
    • socketTimeout {Number} Optional
      DEFAULT: 20000

      The timeout for each attempts for socket connection with the Signaling server to indicate that connection has timed out and has failed to establish. Note that the mininum timeout value is 5000. If less, this value will be 5000.

    • forceTURNSSL {Boolean} Optional
      DEFAULT: false

      Note that currently Firefox does not support the TURNS protocol, and that if TURNS is required, TURN ICE servers using port 443 will be used instead.
      The flag if TURNS protocol should be used when options.enableTURNServer is enabled. By default, "https:" protocol connections uses TURNS protocol.

  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the readyStateChange event state parameter payload value as COMPLETED for request success. [Rel: Skylink.READY_STATE_CHANGE]

    • error {JSON | String}

      The error result in request.

      • When defined as string, it's the error when required App Key is not provided. Defined as null when there are no errors in request
    • success {JSON}

      The success result in request. Defined as null when there are errors in request

      • serverUrl {String}
        The constructed REST URL requested to Auth server.
      • readyState {String}
        The current ready state. [Rel: Skylink.READY_STATE_CHANGE]
      • selectedRoom {String}
        The Room based on the current Room session token retrieved for.
      • appKey {String}
        The configured value of the options.appKey.
      • defaultRoom {String}
        The configured value of the options.defaultRoom.
      • roomServer {String}
        The configured value of the options.roomServer.
      • enableIceTrickle {Boolean}
        The configured value of the options.enableIceTrickle.
      • enableDataChannel {Boolean}
        The configured value of the options.enableDataChannel.
      • enableTURNServer {Boolean}
        The configured value of the options.enableTURNServer.
      • enableSTUNServer {Boolean}
        The configured value of the options.enableSTUNServer.
      • TURNTransport {Boolean}
        The configured value of the options.TURNServerTransport.
      • serverRegion {String}
        The configured value of the options.region.
      • audioFallback {Boolean}
        The configured value of the options.audioFallback.
      • forceSSL {Boolean}
        The configured value of the options.forceSSL.
      • audioCodec {String}
        The configured value of the options.audioCodec.
      • videoCodec {String}
        The configured value of the options.videoCodec.
      • socketTimeout {Number}
        The configured value of the options.socketTimeout.
      • forceTURNSSL {Boolean}
        The configured value of the options.forceTURNSSL.
      • forceTURN {Boolean}
        The configured value of the options.forceTURN.
      • usePublicSTUN {Boolean}
        The configured value of the options.usePublicSTUN.

introducePeer

( sendingPeerId ,   receivingPeerId ,   )
  Defined in: source/peer-privileged.js:183      Available since 0.6.1

Note that this feature requires "isPrivileged" flag to be enabled and "autoIntroduce" flag to be disabled for the App Key provided in the init() method, as only Users connecting using the App Key with this flag enabled (which we call privileged Users / Peers) can retrieve the list of Peer IDs from Rooms within the same App space. Read more about privileged App Key feature here.
Function that selects and introduces a pair of Peers to start connection with each other.

Example:

        

// Example 1: Introduce a pair of Peers skylinkDemo.on("introduceStateChange", function (state, privilegedPeerId, sendingPeerId, receivingPeerId) { if (state === skylinkDemo.INTRODUCE_STATE.INTRODUCING) { console.log("Peer '" + sendingPeerId + "' has been introduced to '" + receivingPeerId + "'"); } });

skylinkDemo.joinRoom(function (jRError, jRSuccess) { if (jRError) return; skylinkDemo.getPeers(function (gPError, gPSuccess) { if (gPError) return; skylinkDemo.introducePeer(gPSuccess.roomName[0], gPSuccess.roomName[1]); }); });

Events Sequence:

  1. If App Key provided in the init() method is not a Privileged enabled Key:
    1. ABORT and return error.
  2. Starts sending introduction request for the selected pair of Peers to the Signaling server.
    1. introduceStateChange event triggers parameter payload state value as INTRODUCING.
    2. If received errors from Signaling server:
      1. introduceStateChange event triggers parameter payload state value as ERROR.

Parameters:

  • sendingPeerId {String}

    The Peer ID to be connected with receivingPeerId.

  • receivingPeerId {String}

    The Peer ID to be connected with sendingPeerId.


joinRoom

( [room] ,   [options] ,   [callback] ,   )
  Defined in: source/room-connection.js:124      Available since 0.5.5

Function that starts the Room session.

Example:

        

// Example 1: Connecting to the default Room without Stream skylinkDemo.joinRoom(function (error, success) { if (error) return; console.log("User connected."); });

// Example 2: Connecting to Room "testxx" with Stream skylinkDemo.joinRoom("testxx", { audio: true, video: true }, function (error, success) { if (error) return; console.log("User connected with getUserMedia() Stream.") });

// Example 3: Connecting to default Room with Stream retrieved earlier skylinkDemo.getUserMedia(function (gUMError, gUMSuccess) { if (gUMError) return; skylinkDemo.joinRoom(function (error, success) { if (error) return; console.log("User connected with getUserMedia() Stream."); }); });

// Example 4: Connecting to "testxx" Room with shareScreen() Stream retrieved manually skylinkDemo.on("mediaAccessRequired", function () { skylinkDemo.shareScreen(function (sSError, sSSuccess) { if (sSError) return; }); });

skylinkDemo.joinRoom("testxx", { manualGetUserMedia: true }, function (error, success) { if (error) return; console.log("User connected with shareScreen() Stream."); });

// Example 5: Connecting to "testxx" Room with User custom data var data = { username: "myusername" }; skylinkDemo.joinRoom("testxx", { userData: data }, function (error, success) { if (error) return; console.log("User connected with correct user data?", success.peerInfo.userData.username === data.username); });

Events Sequence:

  1. If User is in a Room:
    1. Invoke leaveRoom() method to end current Room connection. Invoked leaveRoom() method stopMediaOptions parameter value will be false. Regardless of request errors, joinRoom() will still proceed.
  2. Check if Room name provided matches the Room name of the currently retrieved Room session token.
    1. If Room name does not matches:
      1. Invoke init() method to retrieve new Room session token.
        1. If request has errors:
          1. ABORT and return error.
  3. Open a new socket connection to Signaling server.
    1. If Socket connection fails:
      1. socketError event triggers parameter payload errorCode as CONNECTION_FAILED.
        1. Checks if there are fallback ports and transports to use.
          1. If there are still fallback ports and transports:
            1. Attempts to retry socket connection to Signaling server.
              1. channelRetry event triggers.
              2. socketError event triggers parameter payload errorCode as RECONNECTION_ATTEMPT.
              3. If attempt to retry socket connection to Signaling server has failed:
                1. socketError event triggers parameter payload errorCode as RECONNECTION_FAILED.
                2. Checks if there are still any more fallback ports and transports to use.
                  1. If there are is no more fallback ports and transports to use:
                    1. socketError event triggers parameter payload errorCode as RECONNECTION_ABORTED.
                    2. ABORT and return error.
                  2. Else:
                    1. REPEAT attempt to retry socket connection to Signaling server step.
          2. Else:
            1. socketError event triggers parameter payload errorCode as CONNECTION_ABORTED.
            2. ABORT and return error.
    2. If socket connection to Signaling server has opened:
      1. channelOpen event triggers.
  4. Checks if there is options.manualGetUserMedia requested
    1. If it is requested:
      1. mediaAccessRequired event triggers.
      2. If more than 30 seconds has passed and no getUserMedia() Stream or shareScreen() Stream has been retrieved:
        1. ABORT and return error.
    2. Else:
      1. If there is options.audio or options.video requested:
        1. Invoke getUserMedia() method.
          1. If request has errors:
            1. ABORT and return error.
  5. Starts the Room session
    1. If Room session has started successfully:
      1. peerJoined event triggers parameter payload isSelf value as true.
      2. If MCU is enabled for the App Key provided in init() method and connected:
        1. serverPeerJoined event triggers serverPeerType as MCU. MCU has to be present in the Room in order for Peer connections to commence.
        2. Checks for any available Stream
          1. If shareScreen() Stream is available:
            1. incomingStream event triggers parameter payload isSelf value as true and stream as shareScreen() Stream. User will be sending shareScreen() Stream to Peers.
          2. Else if getUserMedia() Stream is available:
            1. incomingStream event triggers parameter payload isSelf value as true and stream as getUserMedia() Stream. User will be sending getUserMedia() Stream to Peers.
          3. Else:
            1. No Stream will be sent.
    2. Else:
      1. systemAction event triggers parameter payload action as REJECT.
      2. ABORT and return error.

Parameters:

  • room {String} Optional

    The Room name.

    • When not provided, its value is the options.defaultRoom provided in the init() method. Note that if you are using credentials based authentication, you cannot switch the Room that is not the same as the options.defaultRoom defined in the init() method.
  • options {JSON} Optional

    The Room session configuration options.

    • userData {JSON | String} Optional

      The User custom data. This can be set after Room session has started using the setUserData() method.

    • useExactConstraints {Boolean} Optional

      The getUserMedia() method options.useExactConstraints parameter settings. See the options.useExactConstraints parameter in the getUserMedia() method for more information.

    • audio {Boolean | JSON} Optional

      The getUserMedia() method options.audio parameter settings. When value is defined as true or an object, getUserMedia() method to be invoked to retrieve new Stream. If options.video is not defined, it will be defined as false. Object signature matches the options.audio parameter in the getUserMedia() method.

    • video {Boolean | JSON} Optional

      The getUserMedia() method options.video parameter settings. When value is defined as true or an object, getUserMedia() method to be invoked to retrieve new Stream. If options.audio is not defined, it will be defined as false. Object signature matches the options.video parameter in the getUserMedia() method.

    • bandwidth {JSON} Optional

      Note that this is currently not supported with Firefox browsers versions 48 and below as noted in an existing bugzilla ticket here.
      The configuration to set the maximum streaming bandwidth sent to Peers.

      • audio {Number} Optional
        The maximum audio streaming bandwidth sent to Peers in kbps. Recommended values are 50 to 200. 50 is sufficient enough for an audio call. The higher you go if you want clearer audio and to be able to hear music streaming.
      • video {Number} Optional
        The maximum video streaming bandwidth sent to Peers. Recommended values are 256-500 for 180p quality, 500-1024 for 360p quality, 1024-2048 for 720p quality and 2048-4096 for 1080p quality.
      • data {Number} Optional
        The maximum data streaming bandwidth sent to Peers. This affects the P2P messaging in sendP2PMessage() method, and data transfers in sendBlobData() method and sendURLData() method.
    • manualGetUserMedia {Boolean} Optional

      The flag if joinRoom() should trigger mediaAccessRequired event in which the getUserMedia() Stream or shareScreen() Stream must be retrieved as a requirement before Room session may begin. This ignores the options.audio and options.video configuration. After 30 seconds without any Stream retrieved, this results in the callback(error, ..) result.

  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the peerJoined event triggering isSelf parameter payload value as true for request success.

    • error {JSON}

      The error result in request. Defined as null when there are no errors in request

      • error {Error | String}
        The error received when starting Room session has failed.
      • errorCode {Number}
        The current init() method ready state. [Rel: Skylink.READY_STATE_CHANGE]
      • room {String}
        The Room name.
    • success {JSON}

      The success result in request. Defined as null when there are errors in request

      • room {String}
        The Room name.
      • peerId {String}
        The User's Room session Peer ID.
      • peerInfo {JSON}
        The User's current Room session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.

leaveRoom

( [stopMediaOptions=true] ,   [callback] ,   )
  Defined in: source/room-connection.js:514      Available since 0.5.5

Function that stops Room session.

Events Sequence:

  1. Checks if User is in Room.
    1. If User is not in a Room:
      1. ABORT and return error.
    2. Else:
      1. If parameter stopMediaOptions.userMedia value is true:
        1. Invoke stopStream() method. Regardless of request errors, leaveRoom() will still proceed.
      2. If parameter stopMediaOptions.screenshare value is true:
        1. Invoke stopScreen() method. Regardless of request errors, leaveRoom() will still proceed.
      3. peerLeft event triggers for User and all connected Peers in Room.
      4. If MCU is enabled for the App Key provided in init() method and connected:
        1. serverPeerLeft event triggers parameter payload serverPeerType as MCU.
      5. channelClose event triggers.

Parameters:

  • stopMediaOptions {Boolean | JSON} Optional
    DEFAULT: true

    The flag if leaveRoom() should stop both shareScreen() Stream and getUserMedia() Stream.

    • When provided as a boolean, this sets both stopMediaOptions.userMedia and stopMediaOptions.screenshare to its boolean value.
  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the peerLeft event triggering isSelf parameter payload value as true for request success.

    • error {Error | String}

      The error result in request. Defined as null when there are no errors in request Object signature is the leaveRoom() error when stopping Room session.

    • success {JSON}

      The success result in request. Defined as null when there are errors in request

      • peerId {String}
        The User's Room session Peer ID.
      • previousRoom {String}
        The Room name.

lockRoom

()
  Defined in: source/room-connection.js:642      Available since 0.5.0

Note that broadcasted events from muteStream() method, stopStream() method, stopScreen() method, sendMessage() method, unlockRoom() method and lockRoom() method may be queued when sent within less than an interval.
Function that locks the current Room when in session to prevent other Peers from joining the Room.

Events Sequence:

  1. Requests to Signaling server to lock Room
    1. roomLock event triggers parameter payload isLocked value as true.

muteStream

( options ,   )
  Defined in: source/stream-media.js:820      Available since 0.5.7

Note that broadcasted events from muteStream() method, stopStream() method, stopScreen() method, sendMessage() method, unlockRoom() method and lockRoom() method may be queued when sent within less than an interval.
Function that mutes both getUserMedia() Stream and shareScreen() Stream audio or video tracks.

Example:

        

// Example 1: Mute both audio and video tracks in all Streams skylinkDemo.muteStream({ audioMuted: true, videoMuted: true });

// Example 2: Mute only audio tracks in all Streams skylinkDemo.muteStream({ audioMuted: true, videoMuted: false });

// Example 3: Mute only video tracks in all Streams skylinkDemo.muteStream({ audioMuted: false, videoMuted: true });

Events Sequence:

  1. If provided parameter options is invalid:
    1. ABORT and return error.
  2. Checks if there is any available Streams:
    1. If there is no available Streams:
      1. ABORT and return error.
    2. If User is in Room:
      1. Checks if there is audio tracks to mute / unmute:
        1. If there is audio tracks to mute / unmute:
          1. If options.audioMuted value is not the same as the current peerInfo.mediaStatus.audioMuted: This can be retrieved with getPeerInfo() method.
            1. For Peer only peerUpdated event triggers with parameter payload isSelf value as false.
            2. For Peer only streamMuted event triggers with parameter payload isSelf value as false.
      2. Checks if there is video tracks to mute / unmute:
        1. If there is video tracks to mute / unmute:
          1. If options.videoMuted value is not the same as the current peerInfo.mediaStatus.videoMuted: This can be retrieved with getPeerInfo() method.
            1. For Peer only peerUpdated event triggers with parameter payload isSelf value as false.
            2. For Peer only streamMuted event triggers with parameter payload isSelf value as false.
    3. If options.audioMuted value is not the same as the current peerInfo.mediaStatus.audioMuted or options.videoMuted value is not the same as the current peerInfo.mediaStatus.videoMuted:
      1. localMediaMuted event triggers.
      2. If User is in Room:
        1. streamMuted event triggers with parameter payload isSelf value as true.
        2. peerUpdated event triggers with parameter payload isSelf value as true.

Parameters:

  • options {JSON}

    The Streams muting options.

    • audioMuted {Boolean} Optional
      DEFAULT: true

      The flag if all Streams audio tracks should be muted or not.

    • videoMuted {Boolean} Optional
      DEFAULT: true

      The flag if all Streams video tracks should be muted or not.


off

( eventName ,   [callback] ,   )
  Defined in: source/skylink-events.js:778      Available since 0.5.5

Function that unsubscribes listeners from an event.

Example:

        

// Example 1: Unsubscribe all "peerJoined" event skylinkDemo.off("peerJoined");

// Example 2: Unsubscribe only one listener from "peerJoined event" var pJListener = function (peerId, peerInfo, isSelf) { console.info("peerJoined event has been triggered with:", peerId, peerInfo, isSelf); };

skylinkDemo.off("peerJoined", pJListener);

Events Sequence:

There is no event sequence for this method.

Parameters:

  • eventName {String}

    The event.

  • callback {Function} Optional

    The listener to unsubscribe.

    • When not provided, all listeners associated to the event will be unsubscribed.

on

( eventName ,   callback ,   )
  Defined in: source/skylink-events.js:696      Available since 0.1.0

Function that subscribes a listener to an event.

Example:

        

// Example 1: Subscribing to "peerJoined" event skylinkDemo.on("peerJoined", function (peerId, peerInfo, isSelf) { console.info("peerJoined event has been triggered with:", peerId, peerInfo, isSelf); });

Events Sequence:

There is no event sequence for this method.

Parameters:

  • eventName {String}

    The event.

  • callback {Function}

    The listener. This will be invoked when event is triggered.


once

( eventName ,   callback ,   [condition] ,   [fireAlways=false] ,   )
  Defined in: source/skylink-events.js:720      Available since 0.5.4

Function that subscribes a listener to an event once.

Example:

        

// Example 1: Subscribing to "peerJoined" event that triggers without condition skylinkDemo.once("peerJoined", function (peerId, peerInfo, isSelf) { console.info("peerJoined event has been triggered once with:", peerId, peerInfo, isSelf); });

// Example 2: Subscribing to "incomingStream" event that triggers with condition skylinkDemo.once("incomingStream", function (peerId, stream, isSelf, peerInfo) { console.info("incomingStream event has been triggered with User stream:", stream); }, function (peerId, peerInfo, isSelf) { return isSelf; });

// Example 3: Subscribing to "dataTransferState" event that triggers always only when condition is satisfied skylinkDemo.once("dataTransferState", function (state, transferId, peerId, transferInfo) { console.info("Received data transfer from Peer:", transferInfo.data); }, function (state, transferId, peerId) { if (state === skylinkDemo.DATA_TRANSFER_STATE.UPLOAD_REQUEST) { skylinkDemo.acceptDataTransfer(peerId, transferId); } return state === skylinkDemo.DATA_TRANSFER_STATE.DOWNLOAD_COMPLETED; }, true);

Events Sequence:

There is no event sequence for this method.

Parameters:

  • eventName {String}

    The event.

  • callback {Function}

    The listener. This will be invoked once when event is triggered and conditional function is satisfied.

  • condition {Function} Optional

    The conditional function that will be invoked when event is triggered. Return true when invoked to satisfy condition. When not provided, the conditional function will always return true.

  • fireAlways {Boolean} Optional
    DEFAULT: false

    The flag that indicates if once() should act like on() but only invoke listener only when conditional function is satisfied.


refreshConnection

( [targetPeerId] ,   [callback] ,   )
  Defined in: source/peer-connection.js:108      Available since 0.5.5

For MCU enabled Peer connections, the restart functionality may differ, you may learn more about how to workaround it in this article here.
For restarts with Peers connecting from Android or iOS SDKs, restarts might not work as written in in this article here.
Note that this functionality should be used when Peer connection stream freezes during a connection, and is throttled when invoked many times in less than 3 seconds interval.
Function that refreshes Peer connections to update with the current streaming.

Example:

        

// Example 1: Refreshing a Peer connection function refreshFrozenVideoStream (peerId) { skylinkDemo.refreshConnection(peerId, function (error, success) { if (error) return; console.log("Refreshing connection for '" + peerId + "'"); }); }

// Example 2: Refreshing a list of Peer connections function refreshFrozenVideoStreamGroup (peerIdA, peerIdB) { skylinkDemo.refreshConnection([peerIdA, peerIdB], function (error, success) { if (error) { if (error.transferErrors[peerIdA]) { console.error("Failed refreshing connection for '" + peerIdA + "'"); } else { console.log("Refreshing connection for '" + peerIdA + "'"); } if (error.transferErrors[peerIdB]) { console.error("Failed refreshing connection for '" + peerIdB + "'"); } else { console.log("Refreshing connection for '" + peerIdB + "'"); } } else { console.log("Refreshing connection for '" + peerIdA + "' and '" + peerIdB + "'"); } }); }

// Example 3: Refreshing all Peer connections function refreshFrozenVideoStreamAll () { skylinkDemo.refreshConnection(function (error, success) { if (error) { for (var i = 0; i < error.listOfPeers.length; i++) { if (error.refreshErrors[error.listOfPeers[i]]) { console.error("Failed refreshing connection for '" + error.listOfPeers[i] + "'"); } else { console.info("Refreshing connection for '" + error.listOfPeers[i] + "'"); } } } else { console.log("Refreshing connection for all Peers", success.listOfPeers); } }); }

Events Sequence:

  1. Checks if MCU is enabled for App Key provided in init() method
    1. If MCU is enabled:
      1. If there are connected Peers in the Room:
        1. peerRestart event triggers parameter payload isSelfInitiateRestart value as true for all connected Peer connections.
        2. serverPeerRestart event triggers for connected MCU server Peer connection.
      2. Invokes joinRoom() method refreshConnection() will retain the User session information except the Peer ID will be a different assigned ID due to restarting the Room session.
        1. If request has errors
          1. ABORT and return error.
    2. Else:
      1. If there are connected Peers in the Room:
        1. Refresh connections for all targeted Peers.
          1. If Peer connection exists:
            1. peerRestart event triggers parameter payload isSelfInitiateRestart value as true for all targeted Peer connections.
          2. Else:
            1. ABORT and return error.

Parameters:

  • targetPeerId {String | Array} Optional

    Note that this is ignored if MCU is enabled for the App Key provided in init() method. refreshConnection() will "refresh" all Peer connections. See the Event Sequence for more information.
    The target Peer ID to refresh connection with.

    • When provided as an Array, it will refresh all connections with all the Peer IDs provided.
    • When not provided, it will refresh all the currently connected Peers in the Room.
  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the peerRestart event triggering isSelfInitiateRestart parameter payload value as true for all Peers targeted for request success.

    • error {JSON}

      The error result in request. Defined as null when there are no errors in request

      • listOfPeers {Array}
        The list of Peer IDs targeted.
      • refreshErrors {JSON}
        The list of Peer connection refresh errors.
      • refreshErrors.#peerId {Error | String}
        The Peer connection refresh error associated with the Peer ID defined in #peerId property. If #peerId value is "self", it means that it is the error when there is no Peer connections to refresh with.
    • success {JSON}

      The success result in request. Defined as null when there are errors in request

      • listOfPeers {Array}
        The list of Peer IDs targeted.

respondBlobRequest

()
deprecated
  Defined in: source/data-transfer.js:555      Available since 0.5.0

Deprecation Warning! This method has been deprecated, please use acceptDataTransfer() method instead.
Function that accepts or rejects an upload data transfer request from Peer to User. Parameter signature follows acceptDataTransfer() method.

Example:

        

// Example 1: Accept Peer upload data transfer request skylinkDemo.on("incomingDataRequest", function (transferId, peerId, transferInfo, isSelf) { if (!isSelf) { skylinkDemo.respondBlobRequest(peerId, transferId, true); } });

// Example 2: Reject Peer upload data transfer request skylinkDemo.on("incomingDataRequest", function (transferId, peerId, transferInfo, isSelf) { if (!isSelf) { skylinkDemo.respondBlobRequest(peerId, transferId, false); } });

Events Sequence:

Event sequence follows sendBlobData() method after acceptDataTransfer() method is invoked.

sendBlobData

( data ,   [timeout=60] ,   [targetPeerId] ,   [callback] ,   )
  Defined in: source/data-transfer.js:201      Available since 0.5.5

Note that Android and iOS SDKs do not support simultaneous data transfers.
Function that starts an uploading data transfer from User to Peers.

Example:

        

<body> <input type="radio" name="timeout" onchange="setTransferTimeout(0)"> 1s timeout (Default) <input type="radio" name="timeout" onchange="setTransferTimeout(120)"> 2s timeout <input type="radio" name="timeout" onchange="setTransferTimeout(300)"> 5s timeout <hr> <input type="file" onchange="uploadFile(this.Files[0], this.getAttribute('data'))" data="peerId"> <input type="file" onchange="uploadFileGroup(this.Files[0], this.getAttribute('data').split(',')))" data="peerIdA,peerIdB"> <input type="file" onchange="uploadFileAll(this.Files[0])" data=""> <script> var transferTimeout = 0;

function setTransferTimeout (timeout) { transferTimeout = timeout; }

// Example 1: Upload data to a Peer function uploadFile (file, peerId) { var cb = function (error, success) { if (error) return; console.info("File has been transferred to '" + peerId + "' successfully"); }; if (transferTimeout > 0) { skylinkDemo.sendBlobData(file, peerId, transferTimeout, cb); } else { skylinkDemo.sendBlobData(file, peerId, cb); } }

// Example 2: Upload data to a list of Peers function uploadFileGroup (file, peerIds) { var cb = function (error, success) { var listOfPeers = error ? error.listOfPeers : success.listOfPeers; var listOfPeersErrors = error ? error.transferErrors : {}; for (var i = 0; i < listOfPeers.length; i++) { if (listOfPeersErrors[listOfPeers[i]]) { console.error("Failed file transfer to '" + listOfPeers[i] + "'"); } else { console.info("File has been transferred to '" + listOfPeers[i] + "' successfully"); } } }; if (transferTimeout > 0) { skylinkDemo.sendBlobData(file, peerIds, transferTimeout, cb); } else { skylinkDemo.sendBlobData(file, peerIds, cb); } }

// Example 2: Upload data to a list of Peers function uploadFileAll (file) { var cb = function (error, success) { var listOfPeers = error ? error.listOfPeers : success.listOfPeers; var listOfPeersErrors = error ? error.transferErrors : {}; for (var i = 0; i < listOfPeers.length; i++) { if (listOfPeersErrors[listOfPeers[i]]) { console.error("Failed file transfer to '" + listOfPeers[i] + "'"); } else { console.info("File has been transferred to '" + listOfPeers[i] + "' successfully"); } } }; if (transferTimeout > 0) { skylinkDemo.sendBlobData(file, transferTimeout, cb); } else { skylinkDemo.sendBlobData(file, cb); } } </script> </body>

Events Sequence:

  1. Checks if should open a new Datachannel
    1. If Peer connection has closed: This can be checked with peerConnectionState event triggering parameter payload state as CLOSED for Peer.
      1. ABORT step and return error.
    2. If Peer supports simultaneous data transfer, open new Datachannel:
      1. dataChannelState event triggers parameter payload state as CONNECTING and channelType as DATA.
      2. If Datachannel has opened successfully:
        1. dataChannelState event triggers parameter payload state as OPEN and channelType as DATA.
    3. Else:
      1. If Peer connection Datachannel has not been opened This can be checked with dataChannelState event triggering parameter payload state as OPEN and channelType as MESSAGING for Peer.
        1. ABORT step and return error.
  2. Starts the data transfer to Peer
    1. For Peer only dataTransferState event triggers parameter payload state as UPLOAD_REQUEST.
    2. incomingDataRequest event triggers.
    3. Peer invokes acceptDataTransfer() method.
      1. If parameter accept value is true:
        1. User starts upload data transfer to Peer
          1. For User only dataTransferState event triggers parameter payload state as UPLOAD_STARTED.
          2. For Peer only dataTransferState event triggers parameter payload state as DOWNLOAD_STARTED.
        2. If Peer / User invokes cancelDataTransfer() method:
          1. dataTransferState event triggers parameter state as CANCEL.
          2. ABORT step and return error.
        3. If data transfer has errors:
          1. dataTransferState event triggers parameter state as ERROR.
          2. ABORT step and return error.
        4. If Datachannel has closed abruptly during data transfer: This can be checked with dataChannelState event triggering parameter payload state as CLOSED and channelType as DATA for Peer that supports simultaneous data transfer or MESSAGING for Peer that do not support it.
          1. dataTransferState event triggers parameter state as ERROR.
          2. ABORT step and return error.
        5. If data transfer is still progressing:
          1. For User only dataTransferState event triggers parameter payload state as UPLOADING.
          2. For Peer only dataTransferState event triggers parameter payload state as DOWNLOADING.
        6. If data transfer has completed
          1. For User only dataTransferState event triggers parameter payload state as UPLOAD_COMPLETED.
          2. For Peer only dataTransferState event triggers parameter payload state as DOWNLOAD_COMPLETED.
          3. incomingData event triggers.
      2. If parameter accept value is false:
        1. For User only dataTransferState event triggers parameter payload state as REJECTED.
        2. ABORT step and return error.

Parameters:

  • data {Blob}

    The Blob object.

  • timeout {Number} Optional
    DEFAULT: 60

    The timeout to wait for response from Peer.

  • targetPeerId {String | Array} Optional

    The target Peer ID to start data transfer with.

    • When provided as an Array, it will start uploading data transfers with all connections with all the Peer IDs provided.
    • When not provided, it will start uploading data transfers with all the currently connected Peers in the Room.
  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the dataTransferState event triggering state parameter payload as UPLOAD_COMPLETED for all Peers targeted for request success.

    • error {JSON}

      The error result in request. Defined as null when there are no errors in request

      • transferId {String}
        Deprecation Warning! This property has been deprecated. Please use callback.error.transferInfo.transferId instead.
        The data transfer ID. Defined only for single targeted Peer data transfer.
      • state {String}
        Deprecation Warning! This property has been deprecated. Please use dataTransferState event instead.
        The data transfer state that resulted in error. Defined only for single targeted Peer data transfer. [Rel: Skylink.DATA_TRANSFER_STATE]
      • peerId {String}
        Deprecation Warning! This property has been deprecated. Please use callback.error.listOfPeers instead.
        The targeted Peer ID for data transfer. Defined only for single targeted Peer data transfer.
      • isPrivate {Boolean}
        Deprecation Warning! This property has been deprecated. Please use callback.error.transferInfo.isPrivate instead.
        The flag if data transfer is targeted or not, basing off the targetPeerId parameter being defined. Defined only for single targeted Peer data transfer.
      • error {Error | String}
        Deprecation Warning! This property has been deprecated. Please use callback.error.transferErrors instead.
        The error received that resulted in error. Defined only for single targeted Peer data transfer.
      • listOfPeers {Array}
        The list Peer IDs targeted for the data transfer.
      • transferErrors {JSON}
        The list of data transfer errors.
      • transferErrors.#peerId {Error | String}
        The data transfer error associated with the Peer ID defined in #peerId property. If #peerId value is "self", it means that it is the error when there are no Peer connections to start data transfer with.
      • transferInfo {JSON}
        The data transfer information. Object signature matches the transferInfo parameter payload received in the dataTransferState event.
    • success {JSON}

      The success result in request. Defined as null when there are errors in request

      • transferId {String}
        Deprecation Warning! This property has been deprecated. Please use callback.success.transferInfo.transferId instead.
        The data transfer ID.
      • state {String}
        Deprecation Warning! This property has been deprecated. Please use dataTransferState event instead.
        The data transfer state that resulted in error. Defined only for single targeted Peer data transfer. [Rel: Skylink.DATA_TRANSFER_STATE]
      • peerId {String}
        Deprecation Warning! This property has been deprecated. Please use callback.success.listOfPeers instead.
        The targeted Peer ID for data transfer. Defined only for single targeted Peer data transfer.
      • isPrivate {Boolean}
        Deprecation Warning! This property has been deprecated. Please use callback.success.transferInfo.isPrivate instead.
        The flag if data transfer is targeted or not, basing off the targetPeerId parameter being defined. Defined only for single targeted Peer data transfer.
      • listOfPeers {Array}
        The list Peer IDs targeted for the data transfer.
      • transferInfo {JSON}
        The data transfer information. Object signature matches the transferInfo parameter payload received in the dataTransferState event.

sendMessage

( message ,   [targetPeerId] ,   )
  Defined in: source/socket-message.js:110      Available since 0.4.0

Note that broadcasted events from muteStream() method, stopStream() method, stopScreen() method, sendMessage() method, unlockRoom() method and lockRoom() method may be queued when sent within less than an interval.
Function that sends a message to Peers via the Signaling socket connection.

Example:

        

// Example 1: Broadcasting to all Peers skylinkDemo.sendMessage("Hi all!");

// Example 2: Sending to specific Peers var peersInExclusiveParty = [];

skylinkDemo.on("peerJoined", function (peerId, peerInfo, isSelf) { if (isSelf) return; if (peerInfo.userData.exclusive) { peersInExclusiveParty.push(peerId); } });

function updateExclusivePartyStatus (message) { skylinkDemo.sendMessage(message, peersInExclusiveParty); }

Events Sequence:

  1. Sends socket connection message to all targeted Peers via Signaling server.
    1. incomingMessage event triggers parameter payload message.isDataChannel value as false.

Parameters:

  • message {String | JSON}

    The message.

  • targetPeerId {String | Array} Optional

    The target Peer ID to send message to.

    • When provided as an Array, it will send the message to only Peers which IDs are in the list.
    • When not provided, it will broadcast the message to all connected Peers in the Room.

sendP2PMessage

( message ,   [targetPeerId] ,   )
  Defined in: source/data-transfer.js:824      Available since 0.5.5

Function that sends a message to Peers via the Datachannel connection. Consider using sendURLData() method if you are sending large strings to Peers.

Example:

        

// Example 1: Broadcasting to all Peers skylinkDemo.on("dataChannelState", function (state, peerId, error, channelName, channelType) { if (state === skylinkDemo.DATA_CHANNEL_STATE.OPEN && channelType === skylinkDemo.DATA_CHANNEL_TYPE.MESSAGING) { skylinkDemo.sendP2PMessage("Hi all!"); } });

// Example 2: Sending to specific Peers var peersInExclusiveParty = [];

skylinkDemo.on("peerJoined", function (peerId, peerInfo, isSelf) { if (isSelf) return; if (peerInfo.userData.exclusive) { peersInExclusiveParty[peerId] = false; } });

skylinkDemo.on("dataChannelState", function (state, peerId, error, channelName, channelType) { if (state === skylinkDemo.DATA_CHANNEL_STATE.OPEN && channelType === skylinkDemo.DATA_CHANNEL_TYPE.MESSAGING) { peersInExclusiveParty[peerId] = true; } });

function updateExclusivePartyStatus (message) { var readyToSend = []; for (var p in peersInExclusiveParty) { if (peersInExclusiveParty.hasOwnProperty(p)) { readyToSend.push(p); } } skylinkDemo.sendP2PMessage(message, readyToSend); }

Events Sequence:

  1. Sends P2P message to all targeted Peers.
    1. If Peer connection Datachannel has not been opened: This can be checked with dataChannelState event triggering parameter payload state as OPEN and channelType as MESSAGING for Peer.
      1. ABORT step and return error.
    2. incomingMessage event triggers parameter payload message.isDataChannel value as true and isSelf value as true.

Parameters:

  • message {String | JSON}

    The message.

  • targetPeerId {String | Array} Optional

    The target Peer ID to send message to.

    • When provided as an Array, it will send the message to only Peers which IDs are in the list.
    • When not provided, it will broadcast the message to all connected Peers in the Room.

sendStream

( options ,   [callback] ,   )
  Defined in: source/stream-media.js:569      Available since 0.5.6

Note that if shareScreen() Stream is available despite having getUserMedia() Stream available, the shareScreen() Stream is sent instead of the getUserMedia() Stream to Peers.
Function that sends a new getUserMedia() Stream to all connected Peers in the Room.

Example:

        

// Example 1: Send MediaStream object function retrieveStreamBySourceForFirefox (sourceId) { navigator.mediaDevices.getUserMedia({ audio: true, video: { sourceId: { exact: sourceId } } }).then(function (stream) { skylinkDemo.sendStream(stream, function (error, success) { if (err) return; if (stream === success) { console.info("Same MediaStream has been sent"); } console.log("Stream is now being sent to Peers"); attachMediaStream(document.getElementById("my-video"), success); }); }); }

// Example 2: Send video later var inRoom = false;

function sendVideo () { if (!inRoom) return; skylinkDemo.sendStream({ audio: true, video: true }, function (error, success) { if (error) return; console.log("getUserMedia() Stream with video is now being sent to Peers"); attachMediaStream(document.getElementById("my-video"), success); }); }

skylinkDemo.joinRoom({ audio: true }, function (jRError, jRSuccess) { if (jRError) return; inRoom = true; });

Events Sequence:

  1. If User is not in Room:
    1. ABORT and return error.
  2. Checks options provided.
    1. If provided parameter options is not valid:
      1. ABORT and return error.
    2. Else if provided parameter options is a Stream object:
      1. Checks if there is any audio or video tracks.
        1. If there is no tracks:
          1. ABORT and return error.
        2. Else:
          1. Set options.audio value as true if Stream has audio tracks.
          2. Set options.video value as false if Stream has video tracks.
          3. Mutes / Unmutes audio and video tracks based on current muted settings in peerInfo.mediaStatus. This can be retrieved with getPeerInfo() method.
          4. If there is any previous getUserMedia() Stream:
            1. Invokes stopStream() method to stop previous Stream.
          5. mediaAccessSuccess event triggers parameter payload isScreensharing value as false and isAudioFallback value as false.
    3. Else:
      1. Invoke getUserMedia() method with options provided in sendStream().
        1. If request has errors:
          1. ABORT and return error.
  3. If there is currently no shareScreen() Stream:
    1. incomingStream event triggers parameter payload isSelf value as true and stream as getUserMedia() Stream.
    2. peerUpdated event triggers parameter payload isSelf value as true.
    3. Checks if MCU is enabled for App Key provided in init() method.
      1. If MCU is enabled:
        1. Invoke refreshConnection() method.
          1. If request has errors:
            1. ABORT and return error.
      2. Else:
        1. If there are connected Peers in the Room:
          1. Invoke refreshConnection() method.
            1. If request has errors:
              1. ABORT and return error.

Parameters:

  • options {JSON | MediaStream}

    The getUserMedia() method options parameter settings.

    • When provided as a MediaStream object, this configures the options.audio and options.video based on the tracks available in the MediaStream object, and configures the options.audio.mute and options.video.mute based on the tracks .enabled flags in the tracks provided in the MediaStream object without invoking getUserMedia() method. Object signature matches the options parameter in the getUserMedia() method.
  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the mediaAccessSuccess event triggering isScreensharing parameter payload value as false for request success when User is in Room without Peers, or by the peerRestart event triggering isSelfInitiateRestart parameter payload value as true for all connected Peers for request success when User is in Room with Peers.

    • error {Error | String}

      The error result in request. Defined as null when there are no errors in request Object signature is the getUserMedia() method error or when invalid options is provided.

    • success {MediaStream}

      The success result in request. Defined as null when there are errors in request Object signature is the getUserMedia() method Stream object.


sendURLData

( data ,   )
  Defined in: source/data-transfer.js:956      Available since 0.6.1

Currently, the Android and iOS SDKs do not support this type of data transfer.
Function that starts an uploading string data transfer from User to Peers.

Example:

        

<body> <input type="radio" name="timeout" onchange="setTransferTimeout(0)"> 1s timeout (Default) <input type="radio" name="timeout" onchange="setTransferTimeout(120)"> 2s timeout <input type="radio" name="timeout" onchange="setTransferTimeout(300)"> 5s timeout <hr> <input type="file" onchange="showImage(this.Files[0], this.getAttribute('data'))" data="peerId"> <input type="file" onchange="showImageGroup(this.Files[0], this.getAttribute('data').split(',')))" data="peerIdA,peerIdB"> <input type="file" onchange="showImageAll(this.Files[0])" data=""> <image id="target-1" src=""> <image id="target-2" src=""> <image id="target-3" src=""> <script> var transferTimeout = 0;

function setTransferTimeout (timeout) { transferTimeout = timeout; }

function retrieveImageDataURL(file, cb) { var fr = new FileReader(); fr.onload = function () { cb(fr.result); }; fr.readAsDataURL(files[0]); }

// Example 1: Send image data URL to a Peer function showImage (file, peerId) { var cb = function (error, success) { if (error) return; console.info("Image has been transferred to '" + peerId + "' successfully"); }; retrieveImageDataURL(file, function (str) { if (transferTimeout > 0) { skylinkDemo.sendURLData(str, peerId, transferTimeout, cb); } else { skylinkDemo.sendURLData(str, peerId, cb); } document.getElementById("target-1").src = str; }); }

// Example 2: Send image data URL to a list of Peers function showImageGroup (file, peerIds) { var cb = function (error, success) { var listOfPeers = error ? error.listOfPeers : success.listOfPeers; var listOfPeersErrors = error ? error.transferErrors : {}; for (var i = 0; i < listOfPeers.length; i++) { if (listOfPeersErrors[listOfPeers[i]]) { console.error("Failed image transfer to '" + listOfPeers[i] + "'"); } else { console.info("Image has been transferred to '" + listOfPeers[i] + "' successfully"); } } }; retrieveImageDataURL(file, function (str) { if (transferTimeout > 0) { skylinkDemo.sendURLData(str, peerIds, transferTimeout, cb); } else { skylinkDemo.sendURLData(str, peerIds, cb); } document.getElementById("target-2").src = str; }); }

// Example 2: Send image data URL to a list of Peers function uploadFileAll (file) { var cb = function (error, success) { var listOfPeers = error ? error.listOfPeers : success.listOfPeers; var listOfPeersErrors = error ? error.transferErrors : {}; for (var i = 0; i < listOfPeers.length; i++) { if (listOfPeersErrors[listOfPeers[i]]) { console.error("Failed image transfer to '" + listOfPeers[i] + "'"); } else { console.info("Image has been transferred to '" + listOfPeers[i] + "' successfully"); } } }; retrieveImageDataURL(file, function (str) { if (transferTimeout > 0) { skylinkDemo.sendURLData(str, transferTimeout, cb); } else { skylinkDemo.sendURLData(str, cb); } document.getElementById("target-3").src = str; }); } </script> </body>

Events Sequence:

Event sequence follows sendBlobData() method.

Parameters:

  • data {String}

    The data string to transfer to Peer. Parameter signature follows sendBlobData() method except data parameter.


setDebugMode

( [options=false] ,   )
  Defined in: source/skylink-debug.js:391      Available since 0.5.2

Function that configures the debugging mode of the SDK.

Example:

        

// Example 1: Enable both options.storeLogs and options.trace skylinkDemo.setDebugMode(true);

// Example 2: Enable only options.storeLogs skylinkDemo.setDebugMode({ storeLogs: true });

// Example 3: Disable debugging mode skylinkDemo.setDebugMode();

Events Sequence:

There is no event sequence for this method.

Parameters:

  • options {Boolean | JSON} Optional
    DEFAULT: false

    The debugging options.

    • When provided as a boolean, this sets both options.trace and options.storeLogs to its boolean value.
    • trace {Boolean} Optional
      DEFAULT: false

      The flag if SDK console logs should output as console.trace() logs for tracing the Function call stack. Note that the console.trace() output logs is determined by the log level set setLogLevel() method. If console.trace() API is not supported, setDebugMode() will fallback to use console.log() API.

    • storeLogs {Boolean} Optional
      DEFAULT: false

      The flag if SDK should store the console logs. This is required to be enabled for SkylinkLogs API.


setLogLevel

( [logLevel] ,   )
  Defined in: source/skylink-debug.js:351      Available since 0.5.5

Function that configures the level of console API logs to be printed in the Javascript Web Console.

Example:

        

// Example 1: Print all of the console.debug, console.log, console.info, console.warn and console.error logs. skylinkDemo.setLogLevel(skylinkDemo.LOG_LEVEL.DEBUG);

// Example 2: Print only the console.log, console.info, console.warn and console.error logs. skylinkDemo.setLogLevel(skylinkDemo.LOG_LEVEL.LOG);

// Example 3: Print only the console.info, console.warn and console.error logs. skylinkDemo.setLogLevel(skylinkDemo.LOG_LEVEL.INFO);

// Example 4: Print only the console.warn and console.error logs. skylinkDemo.setLogLevel(skylinkDemo.LOG_LEVEL.WARN);

// Example 5: Print only the console.error logs. This is done by default. skylinkDemo.setLogLevel(skylinkDemo.LOG_LEVEL.ERROR);

Events Sequence:

There is no event sequence for this method.

Parameters:

  • logLevel {Number} Optional

    The specific log level of logs to return.

    • When not provided or that the level does not exists, it will not overwrite the current log level. By default, the initial log level is ERROR. [Rel: Skylink.LOG_LEVEL]

setUserData

( userData ,   )
  Defined in: source/peer-data.js:42      Available since 0.5.5

Function that overwrites the User current custom data.

Example:

        

// Example 1: Set/Update User custom data before joinRoom() var userData = "beforejoin";

skylinkDemo.setUserData(userData);

skylinkDemo.joinRoom(function (error, success) { if (error) return; if (success.peerInfo.userData === userData) { console.log("User data is sent"); } });

// Example 2: Update User custom data after joinRoom() var userData = "afterjoin";

skylinkDemo.joinRoom(function (error, success) { if (error) return; skylinkDemo.setUserData(userData); if (skylinkDemo.getPeerInfo().userData === userData) { console.log("User data is updated and sent"); } });

Events Sequence:

  1. Updates User custom data.
    1. If User is in Room:
      1. peerUpdated event triggers with parameter payload isSelf value as true.

Parameters:

  • userData {JSON | String}

    The updated custom data.


shareScreen

( [enableAudio=false] ,   [callback] ,   )
  Defined in: source/stream-media.js:1066      Available since 0.6.0

Function that retrieves screensharing Stream.

Example:

        

// Example 1: Share screen with audio skylinkDemo.shareScreen(function (error, success) { if (error) return; attachMediaStream(document.getElementById("my-screen"), success); });

// Example 2: Share screen without audio skylinkDemo.shareScreen(false, function (error, success) { if (error) return; attachMediaStream(document.getElementById("my-screen"), success); });

Events Sequence:

  1. Retrieves screensharing Stream.
    1. If retrieval was successful:
      1. If browser is Firefox:
        1. If there are missing audio or video tracks requested:
          1. If there is any previous shareScreen() Stream:
            1. Invokes stopScreen() method.
          2. mediaAccessFallback event triggers parameter payload state as FALLBACKED, isScreensharing value as true and isAudioFallback value as false.
        2. mediaAccessSuccess event triggers parameter payload isScreensharing value as true and isAudioFallback value as false.
      2. Else:
        1. If audio is requested: Chrome, Safari and IE currently doesn't support retrieval of audio track together with screensharing video track.
          1. Retrieves audio Stream:
            1. If retrieval was successful:
              1. Attempts to attach screensharing Stream video track to audio Stream.
                1. If attachment was successful:
                  1. mediaAccessSuccess event triggers parameter payload isScreensharing value as true and isAudioFallback value as false.
                2. Else:
                  1. If there is any previous shareScreen() Stream:
                    1. Invokes stopScreen() method.
                  2. mediaAccessFallback event triggers parameter payload state as FALLBACKED, isScreensharing value as true and isAudioFallback value as false.
                  3. mediaAccessSuccess event triggers parameter payload isScreensharing value as true and isAudioFallback value as false.
            2. Else:
              1. If there is any previous shareScreen() Stream:
                1. Invokes stopScreen() method.
              2. mediaAccessFallback event triggers parameter payload state as FALLBACKED, isScreensharing value as true and isAudioFallback value as false.
              3. mediaAccessSuccess event triggers parameter payload isScreensharing value as true and isAudioFallback value as false.
        2. Else:
          1. mediaAccessSuccess event triggers parameter payload isScreensharing value as true and isAudioFallback value as false.
    2. Else:
      1. mediaAccessError event triggers parameter payload isScreensharing value as true and isAudioFallback value as false.
      2. ABORT and return error.
  2. If User is in Room:
    1. incomingStream event triggers parameter payload isSelf value as true and stream as shareScreen() Stream.
    2. peerUpdated event triggers parameter payload isSelf value as true.
    3. Checks if MCU is enabled for App Key provided in init() method.
      1. If MCU is enabled:
        1. Invoke refreshConnection() method.
          1. If request has errors:
            1. ABORT and return error.
      2. Else:
        1. If there are connected Peers in the Room:
          1. Invoke refreshConnection() method.
            1. If request has errors:
              1. ABORT and return error.

Parameters:

  • enableAudio {JSON} Optional
    DEFAULT: false

    The flag if audio tracks should be retrieved.

  • callback {Function} Optional

    The callback function fired when request has completed. Function parameters signature is function (error, success) Function request completion is determined by the mediaAccessSuccess event triggering isScreensharing parameter payload value as true for request success when User is not in the Room or is in Room without Peers, or by the peerRestart event triggering isSelfInitiateRestart parameter payload value as true for all connected Peers for request success when User is in Room with Peers.

    • error {Error | String}

      The error result in request. Defined as null when there are no errors in request Object signature is the shareScreen() error when retrieving screensharing Stream.

    • success {MediaStream}

      The success result in request. Defined as null when there are errors in request Object signature is the screensharing Stream object.


stopScreen

()
  Defined in: source/stream-media.js:1282      Available since 0.6.0

Note that broadcasted events from muteStream() method, stopStream() method, stopScreen() method, sendMessage() method, unlockRoom() method and lockRoom() method may be queued when sent within less than an interval.
Function that stops shareScreen() Stream.

Example:

        

function stopScreen () { skylinkDemo.stopScreen(); }

skylinkDemo.shareScreen();

Events Sequence:

  1. Checks if there is shareScreen() Stream.
    1. If there is shareScreen() Stream:
      1. Stop shareScreen() Stream Stream.
        1. mediaAccessStopped event triggers parameter payload isScreensharing value as true and isAudioFallback value as false.
        2. If User is in Room:
          1. streamEnded event triggers parameter payload isSelf value as true and isScreensharing value as true.
          2. peerUpdated event triggers parameter payload isSelf value as true.
      2. If User is in Room: SKIP this step if stopScreen() was invoked from shareScreen() method.
        1. If there is getUserMedia()Stream Stream:
          1. incomingStream event triggers parameter payload isSelf value as true and stream as getUserMedia() Stream.
          2. peerUpdated event triggers parameter payload isSelf value as true.
        2. Invoke refreshConnection() method.

stopStream

()
  Defined in: source/stream-media.js:781      Available since 0.5.6

Note that broadcasted events from muteStream() method, stopStream() method, stopScreen() method, sendMessage() method, unlockRoom() method and lockRoom() method may be queued when sent within less than an interval.
Function that stops getUserMedia() Stream.

Example:

        

function stopStream () { skylinkDemo.stopStream(); }

skylinkDemo.getUserMedia();

Events Sequence:

  1. Checks if there is getUserMedia() Stream.
    1. If there is getUserMedia() Stream:
      1. Stop getUserMedia() Stream Stream.
        1. mediaAccessStopped event triggers parameter payload isScreensharing value as false.
        2. If User is in Room:
          1. streamEnded event triggers parameter payload isSelf value as true and isScreensharing value asfalse .
          2. peerUpdated event triggers parameter payload isSelf value as true.

unlockRoom

()
  Defined in: source/room-connection.js:674      Available since 0.5.0

Note that broadcasted events from muteStream() method, stopStream() method, stopScreen() method, sendMessage() method, unlockRoom() method and lockRoom() method may be queued when sent within less than an interval.
Function that unlocks the current Room when in session to allow other Peers to join the Room.

Events Sequence:

  1. Requests to Signaling server to unlock Room
    1. roomLock event triggers parameter payload isLocked value as false.

SkylinkLogs

()
global
  Defined in: source/skylink-debug.js:174      Available since 0.5.5

To utilise and enable the SkylinkLogs API functionalities, the setDebugMode() method options.storeLogs parameter has to be enabled.
The object interface to manage the SDK Javascript Web Console logs.


SkylinkLogs.clearAllLogs

()
global
  Defined in: source/skylink-debug.js:216      Available since 0.5.5

Function that clears all the current stored SDK console logs.

Example:

        

// Example 1: Clear all the logs SkylinkLogs.clearAllLogs();


SkylinkLogs.getLogs

()
global
  Defined in: source/skylink-debug.js:189      Available since 0.5.5

Function that gets the current stored SDK console logs.

Parameters:

  • logLevel {Number} Optional

    The specific log level of logs to return.

    • When not provided or that the level does not exists, it will return all logs of all levels. [Rel: Skylink.LOG_LEVEL]

Returns:

{Array}:

The array of stored logs.

  • <#index>{Array}

    The stored log item.

    • 0{Date}

      The DateTime of when the log was stored.

    • 1{String}

      The log level. [Rel: Skylink.LOG_LEVEL]

    • 2{String}

      The log message.

    • 3{Any}Optional

      The log message object.

Example:

        

// Example 1: Get logs of specific level var debugLogs = SkylinkLogs.getLogs(skylinkDemo.LOG_LEVEL.DEBUG);

// Example 2: Get all the logs var allLogs = SkylinkLogs.getLogs();


SkylinkLogs.printAllLogs

()
global
  Defined in: source/skylink-debug.js:230      Available since 0.5.5

Function that prints all the current stored SDK console logs into the Javascript Web Console.

Example:

        

// Example 1: Print all the logs SkylinkLogs.printAllLogs();


_appKey

Attribute Type: {String}
private
  Defined in: source/room-init.js:219      Available since 0.3.0

Stores the App Key configured in init().


_appKeyOwner

Attribute Type: {String}
private
  Defined in: source/room-init.js:289      Available since 0.5.2

Stores the "apiOwner" used for joinRoom().


_audioFallback

Attribute Type: {Boolean}
private
  Defined in: source/stream-media.js:198      Available since 0.5.4

Stores the flag that indicates if getUserMedia() should fallback to retrieve audio only Stream after retrieval of audio and video Stream had failed.

Default value:

false

_autoIntroduce

Attribute Type: {Boolean}
private
  Defined in: source/peer-privileged.js:54      Available since 0.6.1

Stores the flag that indicates if "autoIntroduce" is enabled. If enabled, the Peers connecting the same Room will receive each others "enter" message ping.

Default value:

true

_channelOpen

Attribute Type: {Boolean}
private
  Defined in: source/socket-channel.js:115      Available since 0.5.2

Stores the flag that indicates if socket connection to the Signaling has opened.


_CHUNK_DATAURL_SIZE

Attribute Type: {Number}
private readonly
  Defined in: source/data-process.js:45      Available since 0.5.2

Stores the data chunk size for data URI string transfers.


_CHUNK_FILE_SIZE

Attribute Type: {Number}
private readonly
  Defined in: source/data-process.js:22      Available since 0.5.2

Stores the data chunk size for Blob transfers.


_dataChannels

Attribute Type: {JSON}
private
  Defined in: source/data-channel.js:68      Available since 0.2.0

Stores the list of Peer Datachannel connections.

Keys:

  • (#peerId) {JSON}

    The list of Datachannels associated with Peer ID.

    • <#channelLabel> {RTCDataChannel}

      The Datachannel connection. The property name "main" is reserved for messaging Datachannel type.


_dataTransfersTimeout

Attribute Type: {JSON}
private
  Defined in: source/data-transfer.js:190      Available since 0.4.1

Stores the list of data transfer "wait-for-response" timeouts.

Keys:

  • <#transferId> {Object}

    The data transfer session "wait-for-response" timeout.


_DC_PROTOCOL_TYPE

Attribute Type: {JSON}
private readonly
  Defined in: source/data-transfer.js:111      Available since 0.5.2

Stores the list of data transfer protocols.

Keys:

  • WRQ {String}

    The protocol to initiate data transfer.

  • ACK {String}

    The protocol to request for data transfer chunk. Give -1 to reject the request at the beginning and 0 to accept the data transfer request.

  • CANCEL {String}

    The protocol to terminate data transfer.

  • ERROR {String}

    The protocol when data transfer has errors and has to be terminated.

  • MESSAGE {String}

    The protocol that is used to send P2P messages.


_defaultRoom

Attribute Type: {String}
private
  Defined in: source/room-init.js:229      Available since 0.3.0

Stores the default Room name to connect to when joinRoom() does not provide a Room name.


_downloadDataSessions

Attribute Type: {JSON}
private
  Defined in: source/data-transfer.js:179      Available since 0.4.1

Stores the list of downloading data transfer sessions to Peers.

Keys:

  • <#transferId> {JSON}

    The downloading data transfer session.


_downloadDataTransfers

Attribute Type: {JSON}
private
  Defined in: source/data-transfer.js:168      Available since 0.4.1

Stores the list of downloading data transfers chunks to Peers.

Keys:

  • <#transferId> {Array}

    The downloading data transfer chunks.


_enableDataChannel

Attribute Type: {Boolean}
private
  Defined in: source/data-channel.js:57      Available since 0.3.0

Stores the flag if Peers should have any Datachannel connections.

Default value:

true

_enableDebugMode

Attribute Type: {Boolean}
private scoped
  Defined in: source/skylink-debug.js:68      Available since 0.5.4

Stores the flag if debugging mode is enabled. This manipulates the SkylinkLogs interface.

Default value:

false

_enableDebugStack

Attribute Type: {Boolean}
private scoped
  Defined in: source/skylink-debug.js:81      Available since 0.5.5

Stores the flag if logs should be stored in SkylinkLogs interface.

Default value:

false

_enableDebugTrace

Attribute Type: {Boolean}
private scoped
  Defined in: source/skylink-debug.js:93      Available since 0.5.5

Stores the flag if logs should trace if available. This uses the console.trace API.

Default value:

false

_enableIceTrickle

Attribute Type: {Boolean}
private
  Defined in: source/ice-connection.js:101      Available since 0.3.0

Stores the flag that indicates if Peer connections should trickle ICE.

Default value:

true

_enableSTUN

Attribute Type: {Boolean}
private
  Defined in: source/ice-connection.js:112      Available since 0.5.4

Stores the flag that indicates if STUN ICE servers should be used when constructing Peer connection.

Default value:

true

_enableTURN

Attribute Type: {Boolean}
private
  Defined in: source/ice-connection.js:123      Available since 0.5.4

Stores the flag that indicates if TURN ICE servers should be used when constructing Peer connection.

Default value:

true

_EVENTS

Attribute Type: {JSON}
private
  Defined in: source/skylink-events.js:1      Available since 0.5.2

Stores the list of on() event handlers.

Keys:

  • <#event> {Array}

    The list of event handlers associated with the event.

    • <#index> {Function}

      The event handler function.


_forceSSL

Attribute Type: {Boolean}
private
  Defined in: source/room-init.js:150      Available since 0.5.4

Stores the flag if HTTPS connections should be enforced when connecting to the API or Signaling server if App is accessing from HTTP domain. HTTPS connections are enforced if App is accessing from HTTPS domains.

Default value:

false

_forceTURN

Attribute Type: {Boolean}
private
  Defined in: source/room-init.js:176      Available since 0.6.1

Stores the flag if TURN connections should be enforced when connecting to Peers. This filters all non "relay" ICE candidates to enforce connections via the TURN server.

Default value:

false

_forceTURNSSL

Attribute Type: {Boolean}
private
  Defined in: source/room-init.js:163      Available since 0.6.1

Stores the flag if TURNS connections should be enforced when connecting to the TURN server if App is accessing from HTTP domain. TURNS connections are enforced if App is accessing from HTTPS domains.

Default value:

false

_gatheredCandidates

Attribute Type: {JSON}
private
  Defined in: source/ice-candidate.js:42      Available since 0.6.14

Stores the list of Peer connection ICE candidates.

Keys:

  • <#peerId> {JSON}

    The list of the Peer connection ICE candidates.

    • sending {JSON}

      The list of the Peer connection ICE candidates sent.

    • receiving {JSON}

      The list of the Peer connection ICE candidates received.


_groupMessageList

Attribute Type: {Array}
private
  Defined in: source/socket-message.js:60      Available since 0.5.10

Stores the list of socket messaging protocol types to queue when sent less than a second interval.


_hasMCU

Attribute Type: {Boolean}
private
  Defined in: source/socket-message.js:50      Available since 0.5.4

Stores the flag if MCU environment is enabled.


_hasMCU

Attribute Type: {Boolean}
private
  Defined in: source/socket-message.js:77      Available since 0.5.4

Stores the flag that indicates if MCU is available in the Room. If App Key enables MCU but this is false, this means likely there are problems connecting to the MCU server.


_ICEConnectionFailures

Attribute Type: {JSON}
private
  Defined in: source/ice-connection.js:158      Available since 0.5.8

Stores the list of Peer connections ICE failures counter.

Keys:

  • <#peerId> {Number}

    The Peer connection ICE failures counter.


_inRoom

Attribute Type: {Boolean}
private
  Defined in: source/room-connection.js:114      Available since 0.4.0

Stores the flag that indicates if User is connected to the Room.


_INTEROP_MULTI_TRANSFERS

Attribute Type: {Array}
private readonly
  Defined in: source/data-transfer.js:135      Available since 0.6.1

Stores the list of types of SDKs that do not support simultaneous data transfers.


_key

Attribute Type: {String}
private
  Defined in: source/room-init.js:279      Available since 0.1.0

Stores the "cid" used for joinRoom().


_lastRestart

Attribute Type: {Object}
private
  Defined in: source/peer-connection.js:76      Available since 0.5.9

Stores the restart initiated timestamp to throttle the refreshConnection functionality.


_LOG_KEY

Attribute Type: {String}
private scoped
  Defined in: source/skylink-debug.js:31      Available since 0.5.4

Stores the log message starting header string. E.g. "

- ".


_LOG_LEVELS

Attribute Type: {Array}
private scoped
  Defined in: source/skylink-debug.js:44      Available since 0.5.5

Stores the list of available SDK log levels.


_logLevel

Attribute Type: {String}
private scoped
  Defined in: source/skylink-debug.js:55      Available since 0.5.4

Stores the current SDK log level. Default is ERROR (0).

Default value:

0

_MOZ_CHUNK_FILE_SIZE

Attribute Type: {Number}
private readonly
  Defined in: source/data-process.js:33      Available since 0.5.2

Stores the data chunk size for Blob transfers transferring from/to Firefox browsers due to limitation tested in the past in some PCs (linx predominatly).


_onceEvents

Attribute Type: {JSON}
private
  Defined in: source/skylink-events.js:670      Available since 0.5.4

Stores the list of once() event handlers. These events are only triggered once.

Keys:

  • <#event> {Array}

    The list of event handlers associated with the event.

    • <#index> {Array}

      The array of event handler function and its condition function.


_path

Attribute Type: {String}
private
  Defined in: source/room-init.js:188      Available since 0.1.0

Stores the construct API REST path to obtain Room credentials.


_peerCandidatesQueue

Attribute Type: {JSON}
private
  Defined in: source/ice-candidate.js:29      Available since 0.5.1

Stores the list of buffered ICE candidates that is received before remote session description is received and set.

Keys:

  • <#peerId> {Array}

    The list of the Peer connection buffered ICE candidates received.

    • <#index> {Object}

      The Peer connection buffered ICE candidate received.


_peerConnectionHealth

Attribute Type: {JSON}
private
  Defined in: source/peer-handshake.js:48      Available since 0.5.5

Stores the list of Peer connection "healthy" flags, which indicates if Peer connection is successfully established, and when the health timers expires, it will clear the timer and not attempt to re-negotiate with the Peer connection again.

Keys:

  • <#peerId> {Boolean}

    The flag that indicates if Peer connection has been successfully established.


_peerConnectionHealthTimers

Attribute Type: {JSON}
private
  Defined in: source/peer-handshake.js:35      Available since 0.5.5

Stores the list of Peer connection health timers. This timers sets a timeout which checks and waits if Peer connection is successfully established, or else it will attempt to re-negotiate with the Peer connection again.

Keys:

  • <#peerId> {Object}

    The Peer connection health timer.


_peerConnections

Attribute Type: {JSON}
private
  Defined in: source/peer-connection.js:97      Available since 0.1.0

Stores the list of the Peer connections.

Keys:

  • <#peerId> {Object}

    The Peer connection.


_peerInformations

Attribute Type: {JSON}
private
  Defined in: source/peer-data.js:1      Available since 0.3.0

Stores the list of Peers session information.

Keys:

  • <#peerId> {JSON}

    The Peer session information.

    • userData {JSON | String}

      The Peer custom data.

    • settings {JSON}

      The Peer streaming information.

    • mediaStatus {JSON}

      The Peer streaming muted status.

    • agent {JSON}

      The Peer agent information.


_peerList

Attribute Type: {JSON}
private
  Defined in: source/peer-privileged.js:80      Available since 0.6.1

Stores the list of Peers retrieved from the Signaling from getPeers() method.


_peerMessagesStamps

Attribute Type: {JSON}
private
  Defined in: source/socket-message.js:100      Available since 0.6.15

Stores the list of Peer messages timestamp.


_peerPriorityWeight

Attribute Type: {Number}
private
  Defined in: source/peer-handshake.js:60      Available since 0.5.0

Stores the User connection priority weight. If Peer has a higher connection weight, it will do the offer from its Peer connection first.


_readyState

Attribute Type: {Number}
private
  Defined in: source/room-init.js:269      Available since 0.1.0

Stores the current init() readyState.


_receiveOnly

Attribute Type: {Boolean}
private
  Defined in: source/socket-message.js:89      Available since 0.5.10

Stores the flag that indicates if User should only receive Stream from Peer connections but do not send User's Stream to Peer connections.


_retryCount

Attribute Type: {Number}
private
  Defined in: source/peer-connection.js:86      Available since 0.5.10

Stores the global number of Peer connection retries that would increase the wait-for-response timeout for the Peer connection health timer.


_room

Attribute Type: {JSON}
private
  Defined in: source/room-init.js:299      Available since 0.5.2

Stores the Room credentials information for joinRoom().

Keys:

  • id {String}

    The "rid" for joinRoom().

  • token {String}

    The "roomCred" for joinRoom().

  • startDateTime {String}

    The "start" for joinRoom().

  • duration {String}

    The "len" for joinRoom().

  • connection {String}

    The RTCPeerConnection constraints and configuration. This is not used in the SDK except for the "mediaConstraints" property that sets the default getUserMedia() settings.


_roomCredentials

Attribute Type: {String}
private
  Defined in: source/room-init.js:259      Available since 0.3.0

Stores the init() generated credentials string.


_roomDuration

Attribute Type: {Number}
private
  Defined in: source/room-init.js:249      Available since 0.3.0

Stores the init() credentials duration counted in hours.


_roomLocked

Attribute Type: {Boolean}
private
  Defined in: source/room-connection.js:104      Available since 0.5.2

Stores the flag that indicates if Room is locked.


_roomServer

Attribute Type: {String}
private
  Defined in: source/room-init.js:209      Available since 0.5.2

Stores the API server url.


_roomStart

Attribute Type: {String}
private
  Defined in: source/room-init.js:239      Available since 0.3.0

Stores the init() credentials starting DateTime stamp in ISO 8601.


_selectedAudioCodec

Attribute Type: {String}
private
  Defined in: source/stream-sdp.js:1      Available since 0.5.10

Stores the preferred sending Peer connection streaming audio codec.

Default value:

"auto"

_selectedRoom

Attribute Type: {String}
private
  Defined in: source/room-connection.js:94      Available since 0.3.0

Stores the current Room name that User is connected to.


_selectedVideoCodec

Attribute Type: {String}
private
  Defined in: source/stream-sdp.js:12      Available since 0.5.10

Stores the preferred sending Peer connection streaming video codec.

Default value:

"auto"

_serverRegion

Attribute Type: {String}
private
  Defined in: source/room-init.js:198      Available since 0.5.0

Stores the server region for the Signaling server to use. This is already deprecated an no longer useful. To discuss and remove.


_SIG_MESSAGE_TYPE

Attribute Type: {JSON}
private readonly
  Defined in: source/socket-message.js:14      Available since 0.5.6

Stores the list of socket messaging protocol types. See confluence docs for the list based on the current SM_PROTOCOL_VERSION.


_signalingServer

Attribute Type: {String}
private
  Defined in: source/socket-channel.js:125      Available since 0.5.2

Stores the Signaling server url.


_signalingServerPort

Attribute Type: {Number}
private
  Defined in: source/socket-channel.js:145      Available since 0.5.4

Stores the Signaling server port.


_signalingServerProtocol

Attribute Type: {String}
private
  Defined in: source/socket-channel.js:135      Available since 0.5.4

Stores the Signaling server protocol.


_socket

Attribute Type: {Io}
private
  Defined in: source/socket-channel.js:155      Available since 0.1.0

Stores the Signaling socket connection object.


_socketMessageQueue

Attribute Type: {Array}
private
  Defined in: source/socket-channel.js:76      Available since 0.5.8

Stores the queued socket messages. This is to prevent too many sent over less than a second interval that might cause dropped messages or jams to the Signaling connection.


_socketMessageTimeout

Attribute Type: {Object}
private
  Defined in: source/socket-channel.js:88      Available since 0.5.8

Stores the setTimeout to sent queued socket messages.


_socketPorts

Attribute Type: {JSON}
private
  Defined in: source/socket-channel.js:98      Available since 0.5.8

Stores the list of socket ports to use to connect to the Signaling. These ports are defined by default which is commonly used currently by the Signaling. Should re-evaluate this sometime.

Keys:

  • http: {Array}

    The list of HTTP socket ports.

  • https: {Array}

    The list of HTTPS socket ports.


_socketSession

Attribute Type: {JSON}
private
  Defined in: source/socket-channel.js:66      Available since 0.6.13

Stores the current socket connection information.


_socketTimeout

Attribute Type: {Number}
private
  Defined in: source/socket-channel.js:165      Available since 0.5.4

Stores the socket connection timeout when establishing connection to the Signaling.


_socketUseXDR

Attribute Type: {Boolean}
private
  Defined in: source/socket-channel.js:175      Available since 0.5.4

Stores the flag that indicates if XDomainRequest is used for IE 8/9.


_storedLogs

Attribute Type: {Array}
private scoped
  Defined in: source/skylink-debug.js:106      Available since 0.5.5

Stores the logs used for SkylinkLogs object.


_streams

Attribute Type: {JSON}
private
  Defined in: source/stream-media.js:210      Available since 0.6.15

Stores the Streams.


_streamsBandwidthSettings

Attribute Type: {JSON}
private
  Defined in: source/stream-media.js:262      Available since 0.6.15

Stores all the Stream sending maximum bandwidth settings.


_streamsDefaultSettings

Attribute Type: {JSON}
private
  Defined in: source/stream-media.js:223      Available since 0.6.15

Stores the default camera Stream settings.


_streamsMutedSettings

Attribute Type: {JSON}
private
  Defined in: source/stream-media.js:249      Available since 0.6.15

Stores all the Stream required muted settings.


_streamsStoppedCbs

Attribute Type: {JSON}
private
  Defined in: source/stream-media.js:272      Available since 0.6.15

Stores all the Stream stopped callbacks.


_timestamp

Attribute Type: {JSON}
private
  Defined in: source/skylink-events.js:683      Available since 0.5.8

Stores the timestamps data used for throttling.


_TRANSFER_DELIMITER

Attribute Type: {String}
private readonly
  Defined in: source/data-transfer.js:100      Available since 0.5.10

Stores the fixed delimiter that concats the Datachannel label and actual transfer ID.


_TURNTransport

Attribute Type: {String}
required private
  Defined in: source/ice-connection.js:145      Available since 0.5.4

Stores the option for the TURN protocols to use. This should configure the TURN ICE servers urls ?transport=protocol flag.

Default value:

"any"

_uploadDataSessions

Attribute Type: {JSON}
private
  Defined in: source/data-transfer.js:157      Available since 0.4.1

Stores the list of uploading data transfer sessions to Peers.

Keys:

  • <#transferId> {JSON}

    The uploading data transfer session.


_uploadDataTransfers

Attribute Type: {JSON}
private
  Defined in: source/data-transfer.js:146      Available since 0.4.1

Stores the list of uploading data transfers chunks to Peers.

Keys:

  • <#transferId> {Array}

    The uploading data transfer chunks.


_usePublicSTUN

Attribute Type: {Boolean}
private
  Defined in: source/ice-connection.js:134      Available since 0.6.1

Stores the flag that indicates if public STUN ICE servers should be used when constructing Peer connection.

Default value:

true

_user

Attribute Type: {JSON}
private
  Defined in: source/peer-data.js:16      Available since 0.5.6

Stores the Signaling user credentials from the API response required for connecting to the Signaling server.

Keys:

  • uid {String}

    The API result "username".

  • token {String}

    The API result "userCred".

  • timeStamp {String}

    The API result "timeStamp".

  • sid {String}

    The Signaling server receive user Peer ID.


_userData

Attribute Type: {JSON | String}
private
  Defined in: source/peer-data.js:30      Available since 0.5.6

Stores the User custom data. By default, if no custom user data is set, it is an empty string "".

Default value:

""

AUDIO_CODEC

Attribute Type: {JSON}
readonly
  Defined in: source/stream-media.js:29      Available since 0.5.10

Note that if the audio codec is not supported, the SDK will not configure the local "offer" or "answer" session description to prefer the codec.
The list of available audio codecs to set as the preferred audio codec to use to encode sending audio data when available encoded audio codec for Peer connections configured in the init() method.

Keys:

  • AUTO {String}

    Value "auto" The value of the option to not prefer any audio codec but rather use the created local "offer" / "answer" session description audio codec preference.

  • OPUS {String}

    Value "opus" The value of the option to prefer the OPUS audio codec.

  • ISAC {String}

    Value "ISAC" The value of the option to prefer the ISAC audio codec.


CANDIDATE_GENERATION_STATE

Attribute Type: {JSON}
readonly
  Defined in: source/ice-candidate.js:1      Available since 0.4.1

Learn more about how ICE works in this article here.
The list of Peer connection ICE gathering states.

Keys:

  • GATHERING {String}

    Value "gathering" The value of the state when Peer connection is gathering ICE candidates. These ICE candidates are sent to Peer for its connection to check for a suitable matching pair of ICE candidates to establish an ICE connection for stream audio, video and data. See iceConnectionState event for ICE connection status. This state cannot happen until Peer connection remote "offer" / "answer" session description is set. See peerConnectionState event for session description exchanging status.

  • COMPLETED {String}

    Value "completed" The value of the state when Peer connection gathering of ICE candidates has completed.


DATA_CHANNEL_STATE

Attribute Type: {JSON}
readonly
  Defined in: source/data-channel.js:1      Available since 0.1.0

The list of Datachannel connection states.

Keys:

  • CONNECTING {String}

    Value "connecting" The value of the state when Datachannel is attempting to establish a connection.

  • OPEN {String}

    Value "open" The value of the state when Datachannel has established a connection.

  • CLOSING {String}

    Value "closing" The value of the state when Datachannel connection is closing.

  • CLOSED {String}

    Value "closed" The value of the state when Datachannel connection has closed.

  • ERROR {String}

    Value "error" The value of the state when Datachannel connection has errors.


DATA_CHANNEL_TYPE

Attribute Type: {JSON}
readonly
  Defined in: source/data-channel.js:27      Available since 0.6.1

The list of Datachannel types.

Keys:

  • MESSAGING {String}

    Value "messaging" The value of the Datachannel type that is used only for messaging in sendP2PMessage() method. However for Peers that do not support simultaneous data transfers, this Datachannel type will be used to do data transfers (1 at a time). Each Peer connections will only have one of this Datachannel type and the connection will only close when the Peer connection is closed (happens when peerConnectionState event triggers parameter payload state as CLOSED for Peer).

  • DATA {String}

    Value "data" The value of the Datachannel type that is used only for a data transfer in sendURLData() method and sendBlobData() method. The connection will close after the data transfer has been completed or terminated (happens when dataTransferState event triggers parameter payload state as DOWNLOAD_COMPLETED, UPLOAD_COMPLETED, REJECTED, CANCEL or ERROR for Peer).


DATA_TRANSFER_DATA_TYPE

Attribute Type: {JSON}
readonly
  Defined in: source/data-process.js:1      Available since 0.1.0

Currently, we do not support Blob or ArrayBuffer data type of transfers, but we will look into implementing it in the future.
The list of supported data transfer data types.

Keys:

  • BINARY_STRING {String}

    Value "binaryString" The value of the transfer type that sends all data packets as string (or converts them into string) when transferring data over the Datachannel connection.


DATA_TRANSFER_SESSION_TYPE

Attribute Type: {JSON}
readonly
  Defined in: source/data-transfer.js:32      Available since 0.1.0

The list of data transfers session types.

Keys:


DATA_TRANSFER_STATE

Attribute Type: {JSON}
readonly
  Defined in: source/data-transfer.js:51      Available since 0.4.0

The list of data transfer states.

Keys:

  • UPLOAD_REQUEST {String}

    Value "request" The value of the state when receiving an upload data transfer request from Peer to User. At this stage, the upload data transfer request from Peer may be accepted or rejected with the acceptDataTransfer() method.

  • UPLOAD_STARTED {String}

    Value "uploadStarted" The value of the state when the data transfer request has been accepted and data transfer will start uploading data to Peer. At this stage, the data transfer may be terminated with the cancelDataTransfer() method.

  • DOWNLOAD_STARTED {String}

    Value "downloadStarted" The value of the state when the data transfer request has been accepted and data transfer will start downloading data from Peer. At this stage, the data transfer may be terminated with the cancelDataTransfer() method.

  • REJECTED {String}

    Value "rejected" The value of the state when upload data transfer request to Peer has been rejected and terminated.

  • UPLOADING {String}

    Value "uploading" The value of the state when data transfer is uploading data to Peer.

  • DOWNLOADING {String}

    Value "downloading" The value of the state when data transfer is downloading data from Peer.

  • UPLOAD_COMPLETED {String}

    Value "uploadCompleted" The value of the state when data transfer has uploaded successfully to Peer.

  • DOWNLOAD_COMPLETED {String}

    Value "downloadCompleted" The value of the state when data transfer has downloaded successfully from Peer.

  • CANCEL {String}

    Value "cancel" The value of the state when data transfer has been terminated from / to Peer.

  • ERROR {String}

    Value "error" The value of the state when data transfer has errors and has been terminated from / to Peer.


DATA_TRANSFER_TYPE

Attribute Type: {JSON}
readonly
  Defined in: source/data-transfer.js:15      Available since 0.1.0

The list of data transfers directions.

Keys:

  • UPLOAD {String}

    Value "upload" The value of the data transfer direction when User is uploading data to Peer.

  • DOWNLOAD {String}

    Value "download" The value of the data transfer direction when User is downloading data from Peer.


DT_PROTOCOL_VERSION

Attribute Type: {String}
readonly
  Defined in: source/data-transfer.js:1      Available since 0.5.10

Note that this is used only for SDK developer purposes.
Current version: 0.1.0
The value of the current version of the data transfer protocol.


GET_CONNECTION_STATUS_STATE

Attribute Type: {JSON}
readonly
  Defined in: source/peer-connection.js:36      Available since 0.1.0

The list of getConnectionStatus() method retrieval states.

Keys:

  • RETRIEVING {Number}

    Value 0 The value of the state when getConnectionStatus() is retrieving the Peer connection stats.

  • RETRIEVE_SUCCESS {Number}

    Value 1 The value of the state when getConnectionStatus() has retrieved the Peer connection stats successfully.

  • RETRIEVE_ERROR {Number}

    Value -1 The value of the state when getConnectionStatus() has failed retrieving the Peer connection stats.


GET_PEERS_STATE

Attribute Type: {JSON}
readonly
  Defined in: source/peer-privileged.js:1      Available since 0.6.1

Note that this feature requires "isPrivileged" flag to be enabled for the App Key provided in the init() method, as only Users connecting using the App Key with this flag enabled (which we call privileged Users / Peers) can retrieve the list of Peer IDs from Rooms within the same App space. Read more about privileged App Key feature here.
The list of getPeers() method retrieval states.

Keys:

  • ENQUIRED {String}

    Value "enquired" The value of the state when getPeers() is retrieving the list of Peer IDs from Rooms within the same App space from the Signaling server.

  • RECEIVED {String}

    Value "received" The value of the state when getPeers() has retrieved the list of Peer IDs from Rooms within the same App space from the Signaling server successfully.


HANDSHAKE_PROGRESS

Attribute Type: {JSON}
readonly
  Defined in: source/peer-handshake.js:1      Available since 0.1.0

The list of Peer connection states.

Keys:

  • ENTER {String}

    Value "enter" The value of the connection state when Peer has just entered the Room. At this stage, peerJoined event is triggered.

  • WELCOME {String}

    Value "welcome" The value of the connection state when Peer is aware that User has entered the Room. At this stage, peerJoined event is triggered and Peer connection may commence.

  • OFFER {String}

    Value "offer" The value of the connection state when Peer connection has set the local / remote "offer" session description to start streaming connection.

  • ANSWER {String}

    Value "answer" The value of the connection state when Peer connection has set the local / remote "answer" session description to establish streaming connection.

  • ERROR {String}

    Value "error" The value of the connection state when Peer connection has failed to establish streaming connection. This happens when there are errors that occurs in creating local "offer" / "answer", or when setting remote / local "offer" / "answer".


ICE_CONNECTION_STATE

Attribute Type: {JSON}
readonly
  Defined in: source/ice-connection.js:1      Available since 0.1.0

Learn more about how ICE works in this article here.
The list of Peer connection ICE connection states.

Keys:

  • CHECKING {String}

    Value "checking" The value of the state when Peer connection is checking for a suitable matching pair of ICE candidates to establish ICE connection. Exchanging of ICE candidates happens during candidateGenerationState event.

  • CONNECTED {String}

    Value "connected" The value of the state when Peer connection has found a suitable matching pair of ICE candidates to establish ICE connection but is still checking for a better suitable matching pair of ICE candidates for the best ICE connectivity. At this state, ICE connection is already established and audio, video and data streaming has already started.

  • COMPLETED {String}

    Value "completed" The value of the state when Peer connection has found the best suitable matching pair of ICE candidates to establish ICE connection and checking has stopped. At this state, ICE connection is already established and audio, video and data streaming has already started. This may happpen after CONNECTED.

  • FAILED {String}

    Value "failed" The value of the state when Peer connection ICE connection has failed.

  • DISCONNECTED {String}

    Value "disconnected" The value of the state when Peer connection ICE connection is disconnected. At this state, the Peer connection may attempt to revive the ICE connection. This may happen due to flaky network conditions.

  • CLOSED {String}

    Value "closed" The value of the state when Peer connection ICE connection has closed. This happens when Peer connection is closed and no streaming can occur at this stage.

  • TRICKLE_FAILED {String}

    Value "trickeFailed" The value of the state when Peer connection ICE connection has failed during trickle ICE. Trickle ICE is enabled in init() method enableIceTrickle option.


INTRODUCE_STATE

Attribute Type: {}
readonly
  Defined in: source/peer-privileged.js:28      Available since 0.6.1

Note that this feature requires "isPrivileged" flag to be enabled and "autoIntroduce" flag to be disabled for the App Key provided in the init() method, as only Users connecting using the App Key with this flag enabled (which we call privileged Users / Peers) can retrieve the list of Peer IDs from Rooms within the same App space. Read more about privileged App Key feature here.
The list of introducePeer method Peer introduction request states.

Keys:

  • INTRODUCING {String}

    Value "enquired" The value of the state when introduction request for the selected pair of Peers has been made to the Signaling server.

  • ERROR {String}

    Value "error" The value of the state when introduction request made to the Signaling server for the selected pair of Peers has failed.


isPrivileged

Attribute Type: {Boolean}
private
  Defined in: source/peer-privileged.js:66      Available since 0.6.1

Stores the flag that indicates if "isPrivileged" is enabled. If enabled, the User has Privileged features which has the ability to retrieve the list of Peers in the same App space with getPeers() method and introduce Peers to each other with introducePeer method.

Default value:

false

log

Attribute Type: {JSON}
private scoped
  Defined in: source/skylink-debug.js:315      Available since 0.5.4

Stores the logging functions.

Keys:

  • debug {Function}

    The function that handles the DEBUG level logs.

  • log {Function}

    The function that handles the LOG level logs.

  • info {Function}

    The function that handles the INFO level logs.

  • warn {Function}

    The function that handles the WARN level logs.

  • error {Function}

    The function that handles the ERROR level logs.


LOG_LEVEL

Attribute Type: {JSON}
readonly
  Defined in: source/skylink-debug.js:1      Available since 0.5.4

The list of the SDK console API log levels.

Keys:

  • DEBUG {Number}

    Value 4 The value of the log level that displays console debug, log, info, warn and error logs.

  • LOG {Number}

    Value 3 The value of the log level that displays only console log, info, warn and error logs.

  • INFO {Number}

    Value 2 The value of the log level that displays only console info, warn and error logs.

  • WARN {Number}

    Value 1 The value of the log level that displays only console warn and error logs.

  • ERROR {Number}

    Value 0 The value of the log level that displays only console error logs.


MEDIA_ACCESS_FALLBACK_STATE

Attribute Type: {}
readonly
  Defined in: source/stream-media.js:173      Available since 0.6.14

The list of getUserMedia() method or shareScreen() method Stream fallback states.

Keys:

  • FALLBACKING {JSON}

    Value 0 The value of the state when getUserMedia() will retrieve audio track only when retrieving audio and video tracks failed. This can be configured by init() method audioFallback option.

  • FALLBACKED {JSON}

    Value 1 The value of the state when getUserMedia() or shareScreen() retrieves camera / screensharing Stream successfully but with missing originally required audio or video tracks.

  • ERROR {JSON}

    Value -1 The value of the state when getUserMedia() failed to retrieve audio track only after retrieving audio and video tracks failed.


PEER_CONNECTION_STATE

Attribute Type: {JSON}
readonly
  Defined in: source/peer-connection.js:1      Available since 0.5.0

Learn more about how ICE works in this article here.
The list of Peer connection session description exchanging states.

Keys:

  • STABLE {String}

    Value "stable" The value of the state when there is no session description being exchanged between Peer connection.

  • HAVE_LOCAL_OFFER {String}

    Value "have-local-offer" The value of the state when local "offer" session description is set. This should transition to STABLE state after remote "answer" session description is set. See handshakeProgress event for a more detailed exchanging of session description states.

  • HAVE_REMOTE_OFFER {String}

    Value "have-remote-offer" The value of the state when remote "offer" session description is set. This should transition to STABLE state after local "answer" session description is set. See handshakeProgress event for a more detailed exchanging of session description states.

  • CLOSED {String}

    Value "closed" The value of the state when Peer connection is closed and no session description can be exchanged and set.


READY_STATE_CHANGE

Attribute Type: {JSON}
readonly
  Defined in: source/room-init.js:1      Available since 0.1.0

The list of init() method ready states.

Keys:

  • INIT {Number}

    Value 0 The value of the state when init() has just started.

  • LOADING {Number}

    Value 1 The value of the state when init() is authenticating App Key provided (and with credentials if provided as well) with the Auth server.

  • COMPLETED {Number}

    Value 2 The value of the state when init() has successfully authenticated with the Auth server. Room session token is generated for joining the defaultRoom provided in init(). Room session token has to be generated each time User switches to a different Room in joinRoom() method.

  • ERROR {Number}

    Value -1 The value of the state when init() has failed authenticating with the Auth server. [Rel: Skylink.READY_STATE_CHANGE_ERROR]


READY_STATE_CHANGE_ERROR

Attribute Type: {JSON}
readonly
  Defined in: source/room-init.js:29      Available since 0.4.0

The list of init() method ready state failure codes.

Keys:

  • API_INVALID {Number}

    Value 4001 The value of the failure code when provided App Key in init() does not exists. To resolve this, check that the provided App Key exists in the Temasys Console.

  • API_DOMAIN_NOT_MATCH {Number}

    Value 4002 The value of the failure code when "domainName" property in the App Key does not match the accessing server IP address. To resolve this, contact our support portal.

  • API_CORS_DOMAIN_NOT_MATCH {Number}

    Value 4003 The value of the failure code when "corsurl" property in the App Key does not match accessing CORS. To resolve this, configure the App Key CORS in the Temasys Console.

  • API_CREDENTIALS_INVALID {Number}

    Value 4004 The value of the failure code when there is no CORS present in the HTTP headers during the request to the Auth server present nor options.credentials.credentials configuration provided in the init(). To resolve this, ensure that CORS are present in the HTTP headers during the request to the Auth server.

  • API_CREDENTIALS_NOT_MATCH {Number}

    Value 4005 The value of the failure code when the options.credentials.credentials configuration provided in the init() does not match up with the options.credentials.startDateTime, options.credentials.duration or that the "secret" used to generate options.credentials.credentials does not match the App Key's "secret property provided. To resolve this, check that the options.credentials.credentials is generated correctly and that the "secret" used to generate it is from the App Key provided in the init().

  • API_INVALID_PARENT_KEY {Number}

    Value 4006 The value of the failure code when the App Key provided does not belong to any existing App. To resolve this, check that the provided App Key exists in the Developer Console.

  • API_NO_MEETING_RECORD_FOUND {Number}

    Value 4010 The value of the failure code when provided options.credentials does not match any scheduled meetings available for the "Persistent Room" enabled App Key provided. See the Persistent Room article to learn more.

  • API_OVER_SEAT_LIMIT {Number}

    Value 4020 The value of the failure code when App Key has reached its current concurrent users limit. To resolve this, use another App Key. To create App Keys dynamically, see the Application REST API docs for more information.

  • API_RETRIEVAL_FAILED {Number}

    Value 4021 The value of the failure code when App Key retrieval of authentication token fails. If this happens frequently, contact our support portal.

  • API_WRONG_ACCESS_DOMAIN {Number}

    Value 5005 The value of the failure code when App Key makes request to the incorrect Auth server. To resolve this, ensure that the roomServer is not configured. If this persists even without roomServer configuration, contact our support portal.

  • XML_HTTP_REQUEST_ERROR {Number}

    Value -1 The value of the failure code when requesting to Auth server has timed out.

  • NO_SOCKET_IO {Number}

    Value 1 The value of the failure code when dependency Socket.IO client is not loaded. To resolve this, ensure that the Socket.IO client dependency is loaded before the Skylink SDK. You may use the provided Socket.IO client CDN here.

  • NO_XMLHTTPREQUEST_SUPPORT {Number}

    Value 2 The value of the failure code when XMLHttpRequest API required to make request to Auth server is not supported. To resolve this, display in the Web UI to ask clients to switch to the list of supported browser as listed in here.

  • NO_WEBRTC_SUPPORT {Number}

    Value 3 The value of the failure code when RTCPeerConnection API required for Peer connections is not supported. To resolve this, display in the Web UI to ask clients to switch to the list of supported browser as listed in here. For plugin supported browsers, if the clients does not have the plugin installed, there will be an installation toolbar that will prompt for installation to support the RTCPeerConnection API.

  • NO_PATH {Number}

    Value 4 The value of the failure code when provided init() configuration has errors.

  • ADAPTER_NO_LOADED {Number}

    Value 7 The value of the failure code when dependency AdapterJS is not loaded. To resolve this, ensure that the AdapterJS dependency is loaded before the Skylink dependency. You may use the provided AdapterJS CDN here.


REGIONAL_SERVER

Attribute Type: {JSON}
deprecated readonly
  Defined in: source/room-init.js:127      Available since 0.5.0

Deprecation Warning! This constant has been deprecated.
Automatic nearest regional server has been implemented on the platform.
The list of available Auth servers in these regions configured in the init() method.

Keys:

  • APAC1 {String}

    Value "sg" The value of the option to use the Auth server in Asia Pacific (APAC).

  • US1 {String}

    Value "us2" The value of the option to use the Auth server in United States (US).


SERVER_PEER_TYPE

Attribute Type: {JSON}
readonly
  Defined in: source/peer-connection.js:57      Available since 0.6.1

As there are more features getting implemented, there will be eventually more different types of server Peers.
The list of available types of server Peer connections.

Keys:

  • MCU {String}

    Value "mcu" The value of the server Peer type that is used for MCU connection.


SM_PROTOCOL_VERSION

Attribute Type: {String}
  Defined in: source/socket-message.js:1      Available since 0.6.0

Note that this is used only for SDK developer purposes.
Current version: 0.1.1
The value of the current version of the Signaling socket message protocol.


SOCKET_ERROR

Attribute Type: {JSON}
readonly
  Defined in: source/socket-channel.js:1      Available since 0.5.6

The list of joinRoom() method socket connection failure states.

Keys:

  • CONNECTION_FAILED {Number}

    Value 0 The value of the failure state when joinRoom() socket connection failed to establish with the Signaling server at the first attempt.

  • RECONNECTION_FAILED {Number}

    Value -1 The value of the failure state when joinRoom() socket connection failed to establish the Signaling server after the first attempt.

  • CONNECTION_ABORTED {Number}

    Value -2 The value of the failure state when joinRoom() socket connection will not attempt to reconnect after the failure of the first attempt in CONNECTION_FAILED as there are no more ports or transports to attempt for reconnection.

  • RECONNECTION_ABORTED {Number}

    Value -3 The value of the failure state when joinRoom() socket connection will not attempt to reconnect after the failure of several attempts in RECONNECTION_FAILED as there are no more ports or transports to attempt for reconnection.

  • RECONNECTION_ATTEMPT {Number}

    Value -4 The value of the failure state when joinRoom() socket connection is attempting to reconnect with a new port or transport after the failure of attempts in CONNECTION_FAILED or RECONNECTED_FAILED.


SOCKET_FALLBACK

Attribute Type: {JSON}
readonly
  Defined in: source/socket-channel.js:35      Available since 0.5.6

The list of joinRoom() method socket connection reconnection states.

Keys:

  • NON_FALLBACK {String}

    Value "nonfallback" The value of the reconnection state when joinRoom() socket connection is at its initial state without transitioning to any new socket port or transports yet.

  • FALLBACK_PORT {String}

    Value "fallbackPortNonSSL" The value of the reconnection state when joinRoom() socket connection is reconnecting with another new HTTP port using WebSocket transports to attempt to establish connection with Signaling server.

  • FALLBACK_PORT_SSL {String}

    Value "fallbackPortSSL" The value of the reconnection state when joinRoom() socket connection is reconnecting with another new HTTPS port using WebSocket transports to attempt to establish connection with Signaling server.

  • LONG_POLLING {String}

    Value "fallbackLongPollingNonSSL" The value of the reconnection state when joinRoom() socket connection is reconnecting with another new HTTP port using Polling transports to attempt to establish connection with Signaling server.

  • LONG_POLLING {String}

    Value "fallbackLongPollingSSL" The value of the reconnection state when joinRoom() socket connection is reconnecting with another new HTTPS port using Polling transports to attempt to establish connection with Signaling server.


SYSTEM_ACTION

Attribute Type: {JSON}
readonly
  Defined in: source/room-connection.js:1      Available since 0.5.1

The list of Signaling server reaction states during joinRoom() method.

Keys:

  • WARNING {String}

    Value "warning" The value of the state when Room session is about to end.

  • REJECT {String}

    Value "reject" The value of the state when Room session has failed to start or has ended.


SYSTEM_ACTION_REASON

Attribute Type: {JSON}
readonly
  Defined in: source/room-connection.js:18      Available since 0.5.2

The list of Signaling server reaction states reason of action code during joinRoom() method.

Keys:

  • CREDENTIALS_EXPIRED {String}

    Value "oldTimeStamp" The value of the reason code when Room session token has expired. Happens during joinRoom() method request. Results with: REJECT

  • CREDENTIALS_ERROR {String}

    Value "credentialError" The value of the reason code when Room session token provided is invalid. Happens during joinRoom() method request.

  • DUPLICATED_LOGIN {String}

    Value "duplicatedLogin" The value of the reason code when Room session token has been used already. Happens during joinRoom() method request. Results with: REJECT

  • ROOM_NOT_STARTED {String}

    Value "notStart" The value of the reason code when Room session has not started. Happens during joinRoom() method request. Results with: REJECT

  • EXPIRED {String}

    Value "expired" The value of the reason code when Room session has ended already. Happens during joinRoom() method request. Results with: REJECT

  • ROOM_LOCKED {String}

    Value "locked" The value of the reason code when Room is locked. Happens during joinRoom() method request. Results with: REJECT

  • FAST_MESSAGE {String}

    Value "fastmsg" The value of the reason code when User is flooding socket messages to the Signaling server that is sent too quickly within less than a second interval. Happens after Room session has started. This can be caused by various methods like sendMessage() method, setUserData() method, muteStream() method, enableAudio() method, enableVideo() method, disableAudio() method and disableVideo() method Results with: WARNING

  • ROOM_CLOSING {String}

    Value "toClose" The value of the reason code when Room session is ending. Happens after Room session has started. This serves as a prerequisite warning before ROOM_CLOSED occurs. Results with: WARNING

  • ROOM_CLOSED {String}

    Value "roomclose" The value of the reason code when Room session has just ended. Happens after Room session has started. Results with: REJECT

  • SERVER_ERROR {String}

    Value "serverError" The value of the reason code when Room session fails to start due to some technical errors. Happens during joinRoom() method request. Results with: REJECT

  • KEY_ERROR {String}

    Value "keyFailed" The value of the reason code when Room session fails to start due to some technical error pertaining to App Key initialization. Happens during joinRoom() method request. Results with: REJECT


TURN_TRANSPORT

Attribute Type: {JSON}
readonly
  Defined in: source/ice-connection.js:53      Available since 0.5.4

Note that configuring the protocol may not necessarily result in the desired network transports protocol used in the actual TURN network traffic as it depends which protocol the browser selects and connects with. This simply configures the TURN ICE server urls query option when constructing the Peer connection. When all protocols are selected, the ICE servers urls are duplicated with all protocols.
The list of TURN network transport protocols options when constructing Peer connections configured in the init() method. Example .urls inital input: ["turn:server.com?transport=tcp", "turn:server1.com:3478", "turn:server.com?transport=udp"]

Keys:

  • TCP {String}

    Value "tcp" The value of the option to configure using only TCP network transport protocol. Example .urls output: ["turn:server.com?transport=tcp", "turn:server1.com:3478?transport=tcp"]

  • UDP {String}

    Value "udp" The value of the option to configure using only UDP network transport protocol. Example .urls output: ["turn:server.com?transport=udp", "turn:server1.com:3478?transport=udp"]

  • ANY {String}

    Value "any" The value of the option to configure using any network transport protocols configured from the Signaling server. Example .urls output: ["turn:server.com?transport=tcp", "turn:server1.com:3478", "turn:server.com?transport=udp"]

  • NONE {String}

    Value "none" The value of the option to not configure using any network transport protocols. Example .urls output: ["turn:server.com", "turn:server1.com:3478"] Configuring this does not mean that no protocols will be used, but rather removing ?transport=(protocol) query option in the TURN ICE server .urls when constructing the Peer connection.

  • ALL {String}

    Value "all" The value of the option to configure using both TCP and UDP network transport protocols. Example .urls output: ["turn:server.com?transport=tcp", "turn:server.com?transport=udp", "turn:server1.com:3478?transport=tcp", "turn:server1.com:3478?transport=udp"]


VERSION

Attribute Type: {String}
readonly
  Defined in: source/template/header.js:213      Available since 0.1.0

Contains the current version of Skylink Web SDK.


VIDEO_CODEC

Attribute Type: {JSON}
readonly
  Defined in: source/stream-media.js:1      Available since 0.5.10

Note that if the video codec is not supported, the SDK will not configure the local "offer" or "answer" session description to prefer the codec.
The list of available video codecs to set as the preferred video codec to use to encode sending video data when available encoded video codec for Peer connections configured in the init() method.

Keys:

  • AUTO {String}

    Value "auto" The value of the option to not prefer any video codec but rather use the created local "offer" / "answer" session description video codec preference.

  • VP8 {String}

    Value "VP8" The value of the option to prefer the VP8 video codec.

  • H264 {String}

    Value "H264" The value of the option to prefer the H264 video codec.


VIDEO_RESOLUTION

Attribute Type: {JSON}
readonly
  Defined in: source/stream-media.js:60      Available since 0.5.6

Note that currently getUserMedia() method only configures the maximum resolution of the Stream due to browser interopability and support.
The list of video resolutions sets configured in the getUserMedia() method.

Keys:

  • QQVGA {JSON}

    Value { width: 160, height: 120 } The value of the option to configure QQVGA resolution. Aspect ratio: 4:3 Note that configurating this resolution may not be supported depending on browser and device supports.

  • HQVGA {JSON}

    Value { width: 240, height: 160 } The value of the option to configure HQVGA resolution. Aspect ratio: 3:2 Note that configurating this resolution may not be supported depending on browser and device supports.

  • QVGA {JSON}

    Value { width: 320, height: 240 } The value of the option to configure QVGA resolution. Aspect ratio: 4:3

  • WQVGA {JSON}

    Value { width: 384, height: 240 } The value of the option to configure WQVGA resolution. Aspect ratio: 16:10 Note that configurating this resolution may not be supported depending on browser and device supports.

  • HVGA {JSON}

    Value { width: 480, height: 320 } The value of the option to configure HVGA resolution. Aspect ratio: 3:2 Note that configurating this resolution may not be supported depending on browser and device supports.

  • VGA {JSON}

    Value { width: 640, height: 480 } The value of the option to configure VGA resolution. Aspect ratio: 4:3

  • WVGA {JSON}

    Value { width: 768, height: 480 } The value of the option to configure WVGA resolution. Aspect ratio: 16:10 Note that configurating this resolution may not be supported depending on browser and device supports.

  • FWVGA {JSON}

    Value { width: 854, height: 480 } The value of the option to configure FWVGA resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on browser and device supports.

  • SVGA {JSON}

    Value { width: 800, height: 600 } The value of the option to configure SVGA resolution. Aspect ratio: 4:3 Note that configurating this resolution may not be supported depending on browser and device supports.

  • DVGA {JSON}

    Value { width: 960, height: 640 } The value of the option to configure DVGA resolution. Aspect ratio: 3:2 Note that configurating this resolution may not be supported depending on browser and device supports.

  • WSVGA {JSON}

    Value { width: 1024, height: 576 } The value of the option to configure WSVGA resolution. Aspect ratio: 16:9

  • HD {JSON}

    Value { width: 1280, height: 720 } The value of the option to configure HD resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on device supports.

  • HDPLUS {JSON}

    Value { width: 1600, height: 900 } The value of the option to configure HDPLUS resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on browser and device supports.

  • FHD {JSON}

    Value { width: 1920, height: 1080 } The value of the option to configure FHD resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on device supports.

  • QHD {JSON}

    Value { width: 2560, height: 1440 } The value of the option to configure QHD resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on browser and device supports.

  • WQXGAPLUS {JSON}

    Value { width: 3200, height: 1800 } The value of the option to configure WQXGAPLUS resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on browser and device supports.

  • UHD {JSON}

    Value { width: 3840, height: 2160 } The value of the option to configure UHD resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on browser and device supports.

  • UHDPLUS {JSON}

    Value { width: 5120, height: 2880 } The value of the option to configure UHDPLUS resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on browser and device supports.

  • FUHD {JSON}

    Value { width: 7680, height: 4320 } The value of the option to configure FUHD resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on browser and device supports.

  • QUHD {JSON}

    Value { width: 15360, height: 8640 } The value of the option to configure QUHD resolution. Aspect ratio: 16:9 Note that configurating this resolution may not be supported depending on browser and device supports.


candidateGenerationState

  Defined in: source/skylink-events.js:108      Available since 0.1.0

Event triggered when a Peer connection ICE gathering state has changed.

Event Payload:

  • state {String}

    The current Peer connection ICE gathering state. [Rel: Skylink.CANDIDATE_GENERATION_STATE]

  • peerId {String}

    The Peer ID.


channelClose

  Defined in: source/skylink-events.js:20      Available since 0.1.0

Event triggered when socket connection to Signaling server has closed.


channelError

  Defined in: source/skylink-events.js:40      Available since 0.1.0

This may be caused by Javascript errors in the event listener when subscribing to events.
It may be resolved by checking for code errors in your Web App in the event subscribing listener.
skylinkDemo.on("eventName", function () { // Errors here });
Event triggered when socket connection encountered exception.

Event Payload:

  • error {Error | String}

    The error object.


channelMessage

  Defined in: source/skylink-events.js:28      Available since 0.1.0

Note that this is used only for SDK developer purposes.
Event triggered when receiving socket message from the Signaling server.

Event Payload:

  • message {JSON}

    The socket message object.


channelOpen

  Defined in: source/skylink-events.js:12      Available since 0.1.0

Event triggered when socket connection to Signaling server has opened.


channelRetry

  Defined in: source/skylink-events.js:54      Available since 0.5.6

Event triggered when attempting to establish socket connection to Signaling server when failed.

Event Payload:

  • fallbackType {String}

    The current fallback state. [Rel: Skylink.SOCKET_FALLBACK]

  • currentAttempt {Number}

    The current reconnection attempt.


dataChannelState

  Defined in: source/skylink-events.js:415      Available since 0.1.0

Event triggered when a Datachannel connection state has changed.

Event Payload:

  • state {String}

    The current Datachannel connection state. [Rel: Skylink.DATA_CHANNEL_STATE]

  • peerId {String}

    The Peer ID.

  • error {Error} Optional

    The error object. Defined only when state payload is ERROR.

  • channelName {String}

    The DataChannel ID.

  • channelType {String}

    The DataChannel type. [Rel: Skylink.DATA_CHANNEL_TYPE]


dataTransferState

  Defined in: source/skylink-events.js:431      Available since 0.4.1

Event triggered when a data transfer state has changed.

Event Payload:

  • state {String}

    The current data transfer state. [Rel: Skylink.DATA_TRANSFER_STATE]

  • transferId {String}

    The data transfer ID.

  • peerId {String}

    The Peer ID.

  • transferInfo {JSON}

    The data transfer information.

    • data {Blob | String} Optional

      The data object. Defined only when state payload is UPLOAD_STARTED or DOWNLOAD_COMPLETED.

    • name {String}

      The data transfer name.

    • size {Number}

      The data transfer data object original size.

    • dataType {String}

      The data transfer session type. [Rel: Skylink.DATA_TRANSFER_SESSION_TYPE]

    • timeout {Number}

      The flag if message is targeted or not, basing off the targetPeerId parameter being defined in sendURLData() method or sendBlobData() method.

    • isPrivate {Boolean}

      The flag if data transfer

  • error {JSON} Optional

    The error result. Defined only when state payload is ERROR or CANCEL.

    • message {Error | String}

      The error object.

    • transferType {String}

      The data transfer direction from where the error occurred. [Rel: Skylink.DATA_TRANSFER_TYPE]


getConnectionStatusStateChange

  Defined in: source/skylink-events.js:565      Available since 0.6.14

Event triggered when getConnectionStatus() method retrieval state changes.

Event Payload:

  • state {Number}

    The current getConnectionStatus() retrieval state. [Rel: Skylink.GET_CONNECTION_STATUS_STATE]

  • peerId {String}

    The Peer ID.

  • stats {JSON} Optional

    The Peer connection current stats. Defined only when state payload is RETRIEVE_SUCCESS.

    • raw {JSON}

      The Peer connection raw stats before parsing.

    • audio {JSON}

      The Peer connection audio streaming stats.

      • sending {JSON}
        The Peer connection sending audio streaming stats.
      • sending.bytes {Number}
        The Peer connection sending audio streaming bytes.
      • sending.packets {Number}
        The Peer connection sending audio streaming packets.
      • sending.packetsLost {Number}
        The Peer connection sending audio streaming packets lost.
      • sending.ssrc {Number}
        The Peer connection sending audio streaming RTP packets SSRC.
      • sending.rtt {Number}
        The Peer connection sending audio streaming RTT (Round-trip delay time). Defined as 0 if it's not present in original raw stats before parsing.
      • receiving {JSON}
        The Peer connection receiving audio streaming stats.
      • receiving.bytes {Number}
        The Peer connection sending audio streaming bytes.
      • receiving.packets {Number}
        The Peer connection receiving audio streaming packets.
      • receiving.packetsLost {Number}
        The Peer connection receiving audio streaming packets lost.
      • receiving.ssrc {Number}
        The Peer connection receiving audio streaming RTP packets SSRC.
    • video {JSON}

      The Peer connection video streaming stats.

      • sending {JSON}
        The Peer connection sending video streaming stats.
      • sending.bytes {Number}
        The Peer connection sending video streaming bytes.
      • sending.packets {Number}
        The Peer connection sending video streaming packets.
      • sending.packetsLost {Number}
        The Peer connection sending video streaming packets lost.
      • sending.ssrc {JSON}
        The Peer connection sending video streaming RTP packets SSRC.
      • sending.rtt {Number}
        The Peer connection sending video streaming RTT (Round-trip delay time). Defined as 0 if it's not present in original raw stats before parsing.
      • receiving {JSON}
        The Peer connection receiving video streaming stats.
      • receiving.bytes {Number}
        The Peer connection receiving video streaming bytes.
      • receiving.packets {Number}
        The Peer connection receiving video streaming packets.
      • receiving.packetsLost {Number}
        The Peer connection receiving video streaming packets lost.
      • receiving.ssrc {Number}
        The Peer connection receiving video streaming RTP packets SSRC.
    • selectedCandidate {JSON}

      The Peer connection selected ICE candidate pair stats.

      • local {JSON}
        The Peer connection selected local ICE candidate.
      • local.ipAddress {String}
        The Peer connection selected local ICE candidate IP address.
      • local.portNumber {Number}
        The Peer connection selected local ICE candidate port number.
      • local.transport {String}
        The Peer connection selected local ICE candidate IP transport type.
      • local.candidateType {String}
        The Peer connection selected local ICE candidate type.
      • remote {JSON}
        The Peer connection selected remote ICE candidate.
      • remote.ipAddress {String}
        The Peer connection selected remote ICE candidate IP address.
      • remote.portNumber {Number}
        The Peer connection selected remote ICE candidate port number.
      • remote.transport {String}
        The Peer connection selected remote ICE candidate IP transport type.
      • remote.candidateType {String}
        The Peer connection selected remote ICE candidate type.
    • connection {JSON}

      The Peer connection object stats.

      • iceConnectionState {String}
        The Peer connection ICE connection state.
      • iceGatheringState {String}
        The Peer connection ICE gathering state.
      • signalingState {String}
        The Peer connection signaling state.
      • localDescription {JSON}
        The Peer connection local session description.
      • localDescription.type {String}
        The Peer connection local session description type.
      • localDescription.sdp {String}
        The Peer connection local session description SDP.
      • remoteDescription {JSON}
        The Peer connection remote session description.
      • remoteDescription.type {String}
        The Peer connection remote session description type.
      • remoteDescription.sdp {String}
        The Peer connection remote session description sdp.
      • candidates {JSON}
        The Peer connection list of ICE candidates sent or received.
      • candidates.sending {JSON}
        The Peer connection list of local ICE candidates sent.
      • candidates.sending.host {Array}
        The Peer connection list of local "host" ICE candidates sent.
      • candidates.sending.srflx {Array}
        The Peer connection list of local "srflx" ICE candidates sent.
      • candidates.sending.relay {Array}
        The Peer connection list of local "relay" candidates sent.
      • candidates.receiving {JSON}
        The Peer connection list of remote ICE candidates received.
      • candidates.receiving.host {Array}
        The Peer connection list of remote "host" ICE candidates received.
      • candidates.receiving.srflx {Array}
        The Peer connection list of remote "srflx" ICE candidates received.
      • candidates.receiving.relay {Array}
        The Peer connection list of remote "relay" ICE candidates received.
  • error {Error}

    The error object received. Defined only when state payload is RETRIEVE_ERROR.


getPeersStateChange

  Defined in: source/skylink-events.js:536      Available since 0.6.1

Event triggered when getPeers() method retrieval state changes.

Event Payload:

  • state {String}

    The current getPeers() retrieval state. [Rel: Skylink.GET_PEERS_STATE]

  • privilegedPeerId {String}

    The User's privileged Peer ID.

  • peerList {JSON}

    The list of Peer IDs Rooms within the same App space.

    • #room {Array}

      The list of Peer IDs associated with the Room defined in #room property.


handshakeProgress

  Defined in: source/skylink-events.js:95      Available since 0.3.0

Event triggered when a Peer connection establishment state has changed.

Event Payload:

  • state {String}

    The current Peer connection establishment state. [Rel: Skylink.HANDSHAKE_PROGRESS]

  • peerId {String}

    The Peer ID.

  • error {Error | String} Optional

    The error object. Defined only when state is ERROR.


iceConnectionState

  Defined in: source/skylink-events.js:130      Available since 0.1.0

Event triggered when a Peer connection ICE connection state has changed.

Event Payload:

  • state {String}

    The current Peer connection ICE connection state. [Rel: Skylink.ICE_CONNECTION_STATE]

  • peerId {String}

    The Peer ID.


incomingData

  Defined in: source/skylink-events.js:372      Available since 0.6.1

Event triggered when receiving completed data transfer from Peer.

Event Payload:

  • data {Blob | String}

    The data.

  • transferId {String}

    The data transfer ID.

  • peerId {String}

    The Peer ID.

  • transferInfo {JSON}

    The data transfer information. Object signature matches the transferInfo parameter payload received in the dataTransferState event.

  • isSelf {Boolean}

    The flag if Peer is User.


incomingDataRequest

  Defined in: source/skylink-events.js:388      Available since 0.6.1

Event triggered when receiving upload data transfer from Peer.

Event Payload:

  • transferId {String}

    The transfer ID.

  • peerId {String}

    The Peer ID.

  • transferInfo {String}

    The data transfer information. Object signature matches the transferInfo parameter payload received in the dataTransferState event.

  • isSelf {Boolean}

    The flag if Peer is User.


incomingMessage

  Defined in: source/skylink-events.js:348      Available since 0.5.2

Event triggered when receiving message from Peer.

Event Payload:

  • message {JSON}

    The message result.

  • peerInfo {JSON}

    The Peer session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.

  • isSelf {Boolean}

    The flag if Peer is User.


incomingStream

  Defined in: source/skylink-events.js:333      Available since 0.5.5

Event triggered when receiving Peer Stream.

Event Payload:

  • peerId {String}

    The Peer ID.

  • stream {MediaStream}

    The Stream object. To attach it to an element: attachMediaStream(videoElement, stream);.

  • isSelf {Boolean}

    The flag if Peer is User.

  • peerInfo {JSON}

    The Peer session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.


introduceStateChange

  Defined in: source/skylink-events.js:549      Available since 0.6.1

Event triggered when introducePeer() method introduction request state changes.

Event Payload:

  • state {String}

    The current introducePeer() introduction request state. [Rel: Skylink.INTRODUCE_STATE]

  • privilegedPeerId {String}

    The User's privileged Peer ID.

  • sendingPeerId {String}

    The Peer ID to be connected with receivingPeerId.

  • receivingPeerId {String}

    The Peer ID to be connected with sendingPeerId.

  • reason {String} Optional

    The error object. Defined only when state payload is ERROR.


localMediaMuted

  Defined in: source/skylink-events.js:652      Available since 0.6.15

Event triggered when muteStream() method changes User Streams audio and video tracks muted status.

Event Payload:

  • mediaStatus {JSON}

    The Streams muted settings. This indicates the muted settings for both getUserMedia() Stream and shareScreen() Stream.

    • audioMuted {Boolean}

      The flag if all Streams audio tracks is muted or not. If User's peerInfo.settings.audio is false, this will be defined as true.

    • videoMuted {Boolean}

      The flag if all Streams video tracks is muted or not. If User's peerInfo.settings.video is false, this will be defined as true.


mediaAccessError

  Defined in: source/skylink-events.js:141      Available since 0.1.0

Event triggered when retrieval of Stream failed.

Event Payload:

  • error {Error | String}

    The error object.

  • isScreensharing {Boolean}

    The flag if event occurred during shareScreen() method and not getUserMedia() method.

  • isAudioFallbackError {Boolean}

    The flag if event occurred during retrieval of audio tracks only when getUserMedia() method had failed to retrieve both audio and video tracks.


mediaAccessFallback

  Defined in: source/skylink-events.js:156      Available since 0.6.3

Event triggered when Stream retrieval fallback state has changed.

Event Payload:

  • error {JSON}

    The error result.

    • error {Error | String}

      The error object.

    • diff {JSON} Optional

      The list of excepted but received audio and video tracks in Stream. Defined only when state payload is FALLBACKED.

      • video {JSON}
        The expected and received video tracks.
      • video.expected {Number}
        The expected video tracks.
      • video.received {Number}
        The received video tracks.
      • audio {JSON}
        The expected and received audio tracks.
      • audio.expected {Number}
        The expected audio tracks.
      • audio.received {Number}
        The received audio tracks.
  • state {Number}

    The fallback state. [Rel: Skylink.MEDIA_ACCESS_FALLBACK_STATE]

  • isScreensharing {Boolean}

    The flag if event occurred during shareScreen() method and not getUserMedia() method.

  • isAudioFallback {Boolean}

    The flag if event occurred during retrieval of audio tracks only when getUserMedia() method had failed to retrieve both audio and video tracks.

  • streamId {String}

    The Stream ID. Defined only when state payload is FALLBACKED.


mediaAccessRequired

  Defined in: source/skylink-events.js:201      Available since 0.5.5

Event triggered when retrieval of Stream is required to complete joinRoom() method request.


mediaAccessStopped

  Defined in: source/skylink-events.js:210      Available since 0.5.6

Event triggered when Stream has stopped streaming.

Event Payload:

  • isScreensharing {Boolean}

    The flag if event occurred during shareScreen() method and not getUserMedia() method.

  • isAudioFallback {Boolean}

    The flag if event occurred during retrieval of audio tracks only when getUserMedia() method had failed to retrieve both audio and video tracks.

  • streamId {String}

    The Stream ID.


mediaAccessSuccess

  Defined in: source/skylink-events.js:184      Available since 0.1.0

Event triggered when retrieval of Stream is successful.

Event Payload:

  • stream {MediaStream}

    The Stream object. To attach it to an element: attachMediaStream(videoElement, stream);.

  • isScreensharing {Boolean}

    The flag if event occurred during shareScreen() method and not getUserMedia() method.

  • isAudioFallback {Boolean}

    The flag if event occurred during retrieval of audio tracks only when getUserMedia() method had failed to retrieve both audio and video tracks.

  • streamId {String}

    The Stream ID.


peerConnectionState

  Defined in: source/skylink-events.js:119      Available since 0.1.0

Event triggered when a Peer connection session description exchanging state has changed.

Event Payload:

  • state {String}

    The current Peer connection session description exchanging state. [Rel: Skylink.PEER_CONNECTION_STATE]

  • peerId {String}

    The Peer ID.


peerJoined

  Defined in: source/skylink-events.js:225      Available since 0.5.2

Event triggered when a Peer joins the room.

Event Payload:

  • peerId {String}

    The Peer ID.

  • peerInfo {JSON}

    The Peer session information.

    • userData {JSON | String}

      The Peer current custom data.

    • settings {JSON}

      The Peer sending Stream settings.

      • audio {Boolean | JSON}
        The Peer Stream audio settings. When defined as false, it means there is no audio being sent from Peer.
      • audio.stereo {Boolean}
        The flag if stereo band is configured when encoding audio codec is OPUS for receiving audio data.
      • audio.optional {Array} Optional
        The Peer Stream navigator.getUserMedia() API audio: { optional [..] } property.
      • audio.deviceId {String} Optional
        The Peer Stream audio track source ID of the device used.
      • audio.exactConstraints {Boolean}
        The flag if Peer Stream audio track is sending exact requested values of peerInfo.settings.audio.deviceId when provided.
      • video {Boolean | JSON}
        The Peer Stream video settings. When defined as false, it means there is no video being sent from Peer.
      • video.resolution {JSON}
        The Peer Stream video resolution. [Rel: Skylink.VIDEO_RESOLUTION]
      • video.resolution.width {Number}
        The Peer Stream video resolution width.
      • video.resolution.height {Number}
        The Peer Stream video resolution height.
      • video.frameRate {Number} Optional
        The Peer Stream video frameRate per second (fps).
      • video.screenshare {Boolean}
        The flag if Peer Stream is a screensharing Stream.
      • video.optional {Array} Optional
        The Peer Stream navigator.getUserMedia() API video: { optional [..] } property.
      • video.deviceId {String} Optional
        The Peer Stream video track source ID of the device used.
      • video.exactConstraints {Boolean}
        The flag if Peer Stream video track is sending exact requested values of peerInfo.settings.video.resolution, peerInfo.settings.video.frameRate and peerInfo.settings.video.deviceId when provided.
      • bandwidth {JSON}
        The maximum streaming bandwidth sent from Peer.
      • bandwidth.audio {Number} Optional
        The maximum audio streaming bandwidth sent from Peer.
      • bandwidth.video {Number} Optional
        The maximum video streaming bandwidth sent from Peer.
      • bandwidth.data {Number} Optional
        The maximum data streaming bandwidth sent from Peer.
    • mediaStatus {JSON}

      The Peer Stream muted settings.

      • audioMuted {Boolean}
        The flag if Peer Stream audio tracks is muted or not. If Peer peerInfo.settings.audio is false, this will be defined as true.
      • videoMuted {Boolean}
        The flag if Peer Stream video tracks is muted or not. If Peer peerInfo.settings.video is false, this will be defined as true.
    • agent {JSON}

      The Peer agent information.

      • name {String}
        The Peer agent name. Data may be accessing browser or non-Web SDK name.
      • version {Number}
        The Peer agent version. Data may be accessing browser or non-Web SDK version.
      • os {String} Optional
        The Peer platform name. Data may be accessing OS platform version from Web SDK.
      • pluginVersion {String} Optional
        The Peer Temasys Plugin version. Defined only when Peer is using the Temasys Plugin (IE / Safari).
    • room {String}

      The Room Peer is from.

  • isSelf {Boolean}

    The flag if Peer is User.


peerLeft

  Defined in: source/skylink-events.js:308      Available since 0.5.2

Event triggered when a Peer leaves the room.

Event Payload:

  • peerId {String}

    The Peer ID.

  • peerInfo {JSON}

    The Peer session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.

  • isSelf {Boolean}

    The flag if Peer is User.


peerRestart

  Defined in: source/skylink-events.js:282      Available since 0.5.5

Event triggered when a Peer connection has been refreshed.

Event Payload:

  • peerId {String}

    The Peer ID.

  • peerInfo {JSON}

    The Peer session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.

  • isSelfInitiateRestart {Boolean}

    The flag if User is initiating the Peer connection refresh.


peerUpdated

  Defined in: source/skylink-events.js:295      Available since 0.5.2

Event triggered when a Peer session information has been updated.

Event Payload:

  • peerId {String}

    The Peer ID.

  • peerInfo {JSON}

    The Peer session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.

  • isSelf {Boolean}

    The flag if Peer is User.


readyStateChange

  Defined in: source/skylink-events.js:78      Available since 0.4.0

Event triggered when init() method ready state changes.

Event Payload:

  • readyState {String}

    The current init() ready state. [Rel: Skylink.READY_STATE_CHANGE]

  • error {JSON} Optional

    The error result. Defined only when state is ERROR.

    • status {Number}

      The HTTP status code when failed.

    • errorCode {Number}

      The ready state change failure code. [Rel: Skylink.READY_STATE_CHANGE_ERROR]

    • content {Error}

      The error object.

  • room {String}

    The Room to The Room to retrieve session token for.


roomLock

  Defined in: source/skylink-events.js:402      Available since 0.5.2

Event triggered when Room locked status has changed.

Event Payload:

  • isLocked {Boolean}

    The flag if Room is locked.

  • peerInfo {JSON}

    The Peer session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.

  • isSelf {Boolean}

    The flag if User changed the Room locked status.


serverPeerJoined

  Defined in: source/skylink-events.js:474      Available since 0.6.1

Event triggered when a server Peer joins the room.

Event Payload:

  • peerId {String}

    The Peer ID.

  • serverPeerType {String}

    The server Peer type [Rel: Skylink.SERVER_PEER_TYPE]


serverPeerLeft

  Defined in: source/skylink-events.js:485      Available since 0.6.1

Event triggered when a server Peer leaves the room.

Event Payload:

  • peerId {String}

    The Peer ID.

  • serverPeerType {String}

    The server Peer type [Rel: Skylink.SERVER_PEER_TYPE]


serverPeerRestart

  Defined in: source/skylink-events.js:496      Available since 0.6.1

Event triggered when a server Peer connection has been refreshed.

Event Payload:

  • peerId {String}

    The Peer ID.

  • serverPeerType {String}

    The server Peer type [Rel: Skylink.SERVER_PEER_TYPE]


sessionDisconnect

  Defined in: source/skylink-events.js:321      Available since 0.6.10

Event triggered when Room session has ended abruptly due to network disconnections.

Event Payload:

  • peerId {String}

    The User's Room session Peer ID.

  • peerInfo {JSON}

    The User's Room session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.


socketError

  Defined in: source/skylink-events.js:65      Available since 0.5.5

Event triggered when attempt to establish socket connection to Signaling server has failed.

Event Payload:

  • errorCode {String}

    The socket connection error code. [Rel: Skylink.SOCKET_ERROR]

  • error {Error | String | Number}

    The error object.

  • type {String}

    The fallback state of the socket connection attempt. [Rel: Skylink.SOCKET_FALLBACK]


streamEnded

  Defined in: source/skylink-events.js:507      Available since 0.5.10

Event triggered when Peer Stream streaming has stopped.

Event Payload:

  • peerId {String}

    The Peer ID.

  • peerInfo {JSON}

    The Peer session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.

  • isSelf {Boolean}

    The flag if Peer is User.

  • isScreensharing {Boolean}

    The flag if Peer Stream is a screensharing Stream.

  • streamId {String}

    The Stream ID.


streamMuted

  Defined in: source/skylink-events.js:522      Available since 0.6.1

Event triggered when Peer Stream audio or video tracks has been muted / unmuted.

Event Payload:

  • peerId {String}

    The Peer ID.

  • peerInfo {JSON}

    The Peer session information. Object signature matches the peerInfo parameter payload received in the peerJoined event.

  • isSelf {Boolean}

    The flag if Peer is User.

  • isScreensharing {Boolean}

    The flag if Peer Stream is a screensharing Stream.


systemAction

  Defined in: source/skylink-events.js:461      Available since 0.5.1

Event triggered when Signaling server reaction state has changed.

Event Payload:

  • action {String}

    The current Signaling server reaction state. [Rel: Skylink.SYSTEM_ACTION]

  • message {String}

    The message.

  • reason {String}

    The Signaling server reaction state reason of action code. [Rel: Skylink.SYSTEM_ACTION_REASON]