crossbrowdy
Version:
A Multimedia JavaScript framework to create real cross-platform and hybrid game engines, games, emulators, multimedia libraries and apps.
384 lines (298 loc) • 22.4 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>CrossBrowdy API documentation [printable] Source: CrossBase/net/sockets/CB_Net_Sockets.js</title>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<link type="text/css" rel="stylesheet" href="styles/site.yeti.css">
</head>
<body style="min-width:800px; overflow-wrap:break-word; word-wrap:break-word; word-break:break-word; line-break:strict; hyphens:none; -webkit-hyphens:none; -moz-hyphens:none;">
<div class="navbar navbar-default navbar-fixed-top ">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="index.html">CrossBrowdy API documentation [printable]</a>
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#topNavigation">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse" id="topNavigation">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="namespaces.list.html" class="dropdown-toggle" data-toggle="dropdown">Namespaces<b class="caret"></b></a>
<ul class="dropdown-menu inline">
<li><a href="CB_Arrays.html">CB_Arrays</a></li><li><a href="CB_AudioDetector.html">CB_AudioDetector</a></li><li><a href="CB_Client.html">CB_Client</a></li><li><a href="CB_Collisions.html">CB_Collisions</a></li><li><a href="CB_Configuration.html">CB_Configuration</a></li><li><a href="CB_Configuration.CrossBase.html">CB_Configuration.CrossBase</a></li><li><a href="CB_Configuration.CrossBrowdy.html">CB_Configuration.CrossBrowdy</a></li><li><a href="CB_Controllers.html">CB_Controllers</a></li><li><a href="CB_Controllers_Proprietary.html">CB_Controllers_Proprietary</a></li><li><a href="CB_Controllers_Proprietary.WII.html">CB_Controllers_Proprietary.WII</a></li><li><a href="CB_Controllers_Proprietary.WII_U.html">CB_Controllers_Proprietary.WII_U</a></li><li><a href="CB_Device.html">CB_Device</a></li><li><a href="CB_Device.AmbientLight.html">CB_Device.AmbientLight</a></li><li><a href="CB_Device.Battery.html">CB_Device.Battery</a></li><li><a href="CB_Device.Location.html">CB_Device.Location</a></li><li><a href="CB_Device.Motion.html">CB_Device.Motion</a></li><li><a href="CB_Device.Orientation.html">CB_Device.Orientation</a></li><li><a href="CB_Device.Proximity.html">CB_Device.Proximity</a></li><li><a href="CB_Device.Vibration.html">CB_Device.Vibration</a></li><li><a href="CB_Elements.html">CB_Elements</a></li><li><a href="CB_Events.html">CB_Events</a></li><li><a href="CB_Keyboard.html">CB_Keyboard</a></li><li><a href="CB_Keyboard.chars.html">CB_Keyboard.chars</a></li><li><a href="CB_Keyboard.extended.html">CB_Keyboard.extended</a></li><li><a href="CB_Keyboard.keys.html">CB_Keyboard.keys</a></li><li><a href="CB_Modules.html">CB_Modules</a></li><li><a href="CB_Mouse.html">CB_Mouse</a></li><li><a href="CB_Mouse.CursorImage.html">CB_Mouse.CursorImage</a></li><li><a href="CB_Net.html">CB_Net</a></li><li><a href="CB_Net.Fetch.html">CB_Net.Fetch</a></li><li><a href="CB_Net.REST.html">CB_Net.REST</a></li><li><a href="CB_Net.Sockets.html">CB_Net.Sockets</a></li><li><a href="CB_Net.Sockets.SockJS.html">CB_Net.Sockets.SockJS</a></li><li><a href="CB_Net.XHR.html">CB_Net.XHR</a></li><li><a href="CB_Pointer.html">CB_Pointer</a></li><li><a href="CB_Screen.html">CB_Screen</a></li><li><a href="CB_Speaker.html">CB_Speaker</a></li><li><a href="CB_Touch.html">CB_Touch</a></li><li><a href="CB_baseSymbols.html">CB_baseSymbols</a></li>
</ul>
</li>
<li class="dropdown">
<a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b class="caret"></b></a>
<ul class="dropdown-menu inline">
<li><a href="CB_AudioFile.html">CB_AudioFile</a></li><li><a href="CB_AudioFileCache.html">CB_AudioFileCache</a></li><li><a href="CB_AudioFileSprites.html">CB_AudioFileSprites</a></li><li><a href="CB_AudioFileSpritesPool.html">CB_AudioFileSpritesPool</a></li><li><a href="CB_AudioFile_API.AAPI.html">CB_AudioFile_API.AAPI</a></li><li><a href="CB_AudioFile_API.ACMP.html">CB_AudioFile_API.ACMP</a></li><li><a href="CB_AudioFile_API.SM2.html">CB_AudioFile_API.SM2</a></li><li><a href="CB_AudioFile_API.WAAPI.html">CB_AudioFile_API.WAAPI</a></li><li><a href="CB_Canvas.html">CB_Canvas</a></li><li><a href="CB_GraphicSprites.html">CB_GraphicSprites</a></li><li><a href="CB_GraphicSpritesScene.html">CB_GraphicSpritesScene</a></li>
</ul>
</li>
<li class="dropdown">
<a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b class="caret"></b></a>
<ul class="dropdown-menu inline">
<li><a href="global.html#CB_BASE_NAME">CB_BASE_NAME</a></li><li><a href="global.html#CB_CREDITS_DEFAULT">CB_CREDITS_DEFAULT</a></li><li><a href="global.html#CB_NAME">CB_NAME</a></li><li><a href="global.html#CB_OPTIONS">CB_OPTIONS</a></li><li><a href="global.html#CB_VERSION">CB_VERSION</a></li><li><a href="global.html#CB_addCredits">CB_addCredits</a></li><li><a href="global.html#CB_baseToBase">CB_baseToBase</a></li><li><a href="global.html#CB_baseToInt">CB_baseToInt</a></li><li><a href="global.html#CB_br2nl">CB_br2nl</a></li><li><a href="global.html#CB_brToNl">CB_brToNl</a></li><li><a href="global.html#CB_combineArraysOrObjects">CB_combineArraysOrObjects</a></li><li><a href="global.html#CB_combineAutomatically">CB_combineAutomatically</a></li><li><a href="global.html#CB_combineJSON">CB_combineJSON</a></li><li><a href="global.html#CB_combineURIParameters">CB_combineURIParameters</a></li><li><a href="global.html#CB_combineURLParameters">CB_combineURLParameters</a></li><li><a href="global.html#CB_console">CB_console</a></li><li><a href="global.html#CB_copyObject">CB_copyObject</a></li><li><a href="global.html#CB_countDecimalDigits">CB_countDecimalDigits</a></li><li><a href="global.html#CB_countDecimalPart">CB_countDecimalPart</a></li><li><a href="global.html#CB_countDecimals">CB_countDecimals</a></li><li><a href="global.html#CB_countIntegerDigits">CB_countIntegerDigits</a></li><li><a href="global.html#CB_countIntegerPart">CB_countIntegerPart</a></li><li><a href="global.html#CB_credits">CB_credits</a></li><li><a href="global.html#CB_forEach">CB_forEach</a></li><li><a href="global.html#CB_forceString">CB_forceString</a></li><li><a href="global.html#CB_getBase64StringObject">CB_getBase64StringObject</a></li><li><a href="global.html#CB_getCookie">CB_getCookie</a></li><li><a href="global.html#CB_getDatum">CB_getDatum</a></li><li><a href="global.html#CB_getJSONPropertyValue">CB_getJSONPropertyValue</a></li><li><a href="global.html#CB_getLZStringObject">CB_getLZStringObject</a></li><li><a href="global.html#CB_getValueIndex">CB_getValueIndex</a></li><li><a href="global.html#CB_getValuePath">CB_getValuePath</a></li><li><a href="global.html#CB_includeJSFile">CB_includeJSFile</a></li><li><a href="global.html#CB_indexOf">CB_indexOf</a></li><li><a href="global.html#CB_init">CB_init</a></li><li><a href="global.html#CB_intToBase">CB_intToBase</a></li><li><a href="global.html#CB_isArray">CB_isArray</a></li><li><a href="global.html#CB_isEmail">CB_isEmail</a></li><li><a href="global.html#CB_isFileLocal">CB_isFileLocal</a></li><li><a href="global.html#CB_isString">CB_isString</a></li><li><a href="global.html#CB_lastIndexOf">CB_lastIndexOf</a></li><li><a href="global.html#CB_ltrim">CB_ltrim</a></li><li><a href="global.html#CB_nl2br">CB_nl2br</a></li><li><a href="global.html#CB_nlToBr">CB_nlToBr</a></li><li><a href="global.html#CB_numberFormat">CB_numberFormat</a></li><li><a href="global.html#CB_numberOfDecimalDigits">CB_numberOfDecimalDigits</a></li><li><a href="global.html#CB_numberOfDecimals">CB_numberOfDecimals</a></li><li><a href="global.html#CB_numberOfIntegerDigits">CB_numberOfIntegerDigits</a></li><li><a href="global.html#CB_parseJSON">CB_parseJSON</a></li><li><a href="global.html#CB_parseString">CB_parseString</a></li><li><a href="global.html#CB_regularExpressionString">CB_regularExpressionString</a></li><li><a href="global.html#CB_renderString">CB_renderString</a></li><li><a href="global.html#CB_replaceAll">CB_replaceAll</a></li><li><a href="global.html#CB_rtrim">CB_rtrim</a></li><li><a href="global.html#CB_scriptPath">CB_scriptPath</a></li><li><a href="global.html#CB_scriptPathCalculate">CB_scriptPathCalculate</a></li><li><a href="global.html#CB_setCookie">CB_setCookie</a></li><li><a href="global.html#CB_setDatum">CB_setDatum</a></li><li><a href="global.html#CB_sizeOf">CB_sizeOf</a></li><li><a href="global.html#CB_sizeof">CB_sizeof</a></li><li><a href="global.html#CB_stringifyJSON">CB_stringifyJSON</a></li><li><a href="global.html#CB_symmetricCall">CB_symmetricCall</a></li><li><a href="global.html#CB_symmetricCallClear">CB_symmetricCallClear</a></li><li><a href="global.html#CB_this">CB_this</a></li><li><a href="global.html#CB_trim">CB_trim</a></li>
</ul>
</li>
</ul>
<div class="col-sm-3 col-md-3">
<form class="navbar-form" role="search">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search" name="q" id="search-input">
<div class="input-group-btn">
<button class="btn btn-default" id="search-submit"><i class="glyphicon glyphicon-search"></i></button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="container" id="toc-content" style="width:100%;">
<div class="row" style="width:100%;">
<div class="col-md-12">
<div id="main">
<h1 class="page-title">Source: CrossBase/net/sockets/CB_Net_Sockets.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">/**
* @file Sockets and related management. Contains the {@link CB_Net.Sockets} static class.
* @author Joan Alba Maldonado <workindalian@gmail.com>
* @license Creative Commons Attribution 4.0 International. See more at {@link https://crossbrowdy.com/about#what_is_the_crossbrowdy_copyright_and_license}.
*/
if (typeof(CB_Net) === "undefined") { var CB_Net = function() { return CB_Net; }; }
/**
* Static class to manage sockets and related. It will return itself if it is tried to be instantiated. It uses [SockJS-client]{@link https://github.com/sockjs/sockjs-client}.
* @namespace
*/
CB_Net.Sockets = function() { return CB_Net.Sockets; };
{
CB_Net.Sockets.initialized = false; //It will tells whether the object has been initialized or not.
/**
Property that contains the functions and properties related with the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library.
* @namespace CB_Net.Sockets.SockJS
*/
CB_Net.Sockets.SockJS = {}; //Keeps the methods and properties related to SockJS library.
/**
* Keeps the last SockJS created.
* @var
* @readonly
* @type {Object|null}
* @default
*/
CB_Net.Sockets.SockJS.websocketLast = null; //Keeps the last websocket object.
//Initializes all values:
CB_Net.Sockets.init = function()
{
if (CB_Net.Sockets.initialized) { return CB_Net.Sockets; }
//The object has been initialized:
CB_Net.Sockets.initialized = true;
//TODO.
return CB_Net.Sockets;
}
/**
* Alias for {@link CB_Net.Sockets.SockJS.listen}.
* @function CB_Net.Sockets.SockJS.open
* @see {@link CB_Net.Sockets.SockJS.listen}
*/
/**
* Creates the websockets object and sets the listeners. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.
* @function
* @param {string} serverURL - The URL of the SockJS server. This will be used as the first parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called "url").
* @param {function} [onOpen] - Function for the event "onopen" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
* @param {function} [onClose] - Function for the event "onclose" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
* @param {function} [onMessage] - Function for the event "onmessage" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
* @param {function} [onError] - Function for the event "onerror" used by the SockJS object. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
* @param {Object} [options] - The desired options for the SockJS object. This will be used as the third parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called "options").
* @param {array} [protocols] - This will be used as the second parameter when it calls the constructor of SockJS internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation (the parameter is called "_reserved").
* @returns {Object|null} Returns a SockJS object. Read the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation for more information. In the case of error, returns null.
*/
CB_Net.Sockets.SockJS.listen = function(serverURL, onOpen, onClose, onMessage, onError, options, protocols)
{
try
{
var websocket = new SockJS(serverURL, protocols || undefined, options || undefined); //Creates the SockJS object.
if (typeof(websocket) === "undefined" || websocket === null)
{
if (typeof(onError) === "function") { onError({ "error" : "CANNOT OPEN THE CONNECTION TO " + serverURL }); }
return null;
}
if (typeof(onOpen) === "function") { websocket.onopen = onOpen; } //Example: function webSocketsOnOpen(evt) { CB_console(websocket.transport); }
if (typeof(onClose) === "function") { websocket.onclose = onClose; } //Example: function webSocketsOnClose(evt) { CB_console("Websocket closed. Reason: " + evt.reason); }
if (typeof(onMessage) === "function") { websocket.onmessage = onMessage; } //Example: function webSocketsOnMessage(evt) { CB_console(evt.data); }
if (typeof(onError) === "function") { websocket.onerror = onError; } //Example: function webSocketsOnError(evt) { CB_console("Websocket error: " + JSON.stringify(evt)); }
CB_Net.Sockets.SockJS.websocketLast = websocket; //Stores the object as the last one.
return websocket;
}
catch(E)
{
if (typeof(onError) === "function") { onError({ "error" : "ERROR CALLING 'listen': " + E }); }
return null;
}
}
/**
* Sends a websockets message. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.
* @function
* @param {string} message - The message that we want to send. This will be used as the first and unique parameter when it calls the "send" function of the SockJS object internally. Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
* @param {function} [websocket={@link CB_Net.Sockets.SockJS.websocketLast}] - The SockJS object that we want to use. If not provided, it will try to use the last one created (if any) which is stored in {@link CB_Net.Sockets.SockJS.websocketLast}.
* @param {function} [onError] - Function for the event "onerror" used by the SockJS object. If provided, it will replace the previous one (if any). Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
* @returns {undefined|false} Returns undefined (the same as the "send" function of the SockJS object) if the SockJS has been used or false otherwise.
*/
CB_Net.Sockets.SockJS.send = function(message, websocket, onError)
{
websocket = websocket || CB_Net.Sockets.SockJS.websocketLast;
if (typeof(websocket) !== "undefined" && websocket !== null && typeof(websocket.send) === "function")
{
if (typeof(onError) === "function") { websocket.onerror = onError; } //Example: function webSocketsOnError(evt) { CB_console("Websocket error: " + JSON.stringify(evt)); }
var returnValue = false;
try
{
returnValue = websocket.send(message);
}
catch(E)
{
if (typeof(onError) === "function") { onError({ "error" : "ERROR CALLING 'send': " + E }); }
returnValue = false;
}
return returnValue;
}
else
{
if (typeof(onError) === "function") { onError({ "error" : "CANNOT FIND WEBSOCKETS OBJECT" }); }
return false;
}
}
/**
* Tries to close the websockets connection. Using the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library internally.
* @function
* @param {function} [websocket={@link CB_Net.Sockets.SockJS.websocketLast}] - The SockJS object that we want to use. If not provided, it will try to use the last one created (if any) which is stored in {@link CB_Net.Sockets.SockJS.websocketLast}.
* @param {function} [onError] - Function for the event "onerror" used by the SockJS object. If provided, it will replace the previous one (if any). Following the same rules as in the [SockJS client]{@link https://github.com/sockjs/sockjs-client} library documentation.
* @returns {undefined|false} Returns undefined (the same as the "close" function of the SockJS object) if the SockJS has been used or false otherwise.
*/
CB_Net.Sockets.SockJS.close = function(websocket, onError)
{
websocket = websocket || CB_Net.Sockets.SockJS.websocketLast;
if (typeof(websocket) !== "undefined" && websocket !== null && typeof(websocket.close) === "function")
{
if (typeof(onError) === "function") { websocket.onerror = onError; } //Example: function webSocketsOnError(evt) { CB_console("Websocket error: " + JSON.stringify(evt)); }
var returnValue = false;
try
{
returnValue = websocket.close();
if (websocket === CB_Net.Sockets.SockJS.websocketLast) { CB_Net.Sockets.SockJS.websocketLast = null; }
}
catch(E)
{
if (typeof(onError) === "function") { onError({ "error" : "ERROR CALLING 'close': " + E }); }
returnValue = false;
}
return returnValue;
}
else
{
if (typeof(onError) === "function") { onError({ "error" : "CANNOT FIND WEBSOCKETS OBJECT" }); }
return false;
}
}
}</pre>
</article>
</section>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
<div class="modal fade" id="searchResults">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Search results</h4>
</div>
<div class="modal-body"></div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
<footer>
<span class="copyright">
<span style="color:#000000">© <address style="display:inline; font-style:normal;"><a href="https://crossbrowdy.com/" target="_blank">CrossBrowdy</a> API documentation</address> by <a href="https://joanalbamaldonado.com/" target="_blank">Joan Alba Maldonado</a> - <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank">Creative Commons Attribution 4.0 International</a><br />DocStrap Copyright © 2012-2015 The contributors to the JSDoc3 and DocStrap projects.</span>
</span>
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a>
on Wed Mar 22nd 2023
using the <a href="https://github.com/docstrap/docstrap">DocStrap template</a>.
</span>
</footer>
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/toc.js"></script>
<script type="text/javascript" src="scripts/fulltext-search-ui.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( ".tutorial-section pre, .readme-section pre, pre.prettyprint.source" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
var langClassMatch = example.parent()[0].className.match(/lang\-(\S+)/);
lang = langClassMatch ? langClassMatch[1] : "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
$.catchAnchorLinks( {
navbarOffset: 10
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "#toc-content h1,#toc-content h2,#toc-content h3,#toc-content h4",
showAndHide : false,
smoothScrolling: true
} );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
$( "table" ).each( function () {
var $this = $( this );
$this.addClass('table');
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
<script type="text/javascript">
$(document).ready(function() {
SearcherDisplay.init();
});
</script>
</body>
</html>