copious-transitions
Version:
Framework for working with frameworks
3,147 lines (745 loc) • 40.7 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: WebSocketManager</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: WebSocketManager</h1>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>
<span class="ancestors"><a href="base.html">base</a>.</span>WebSocketManager<span class="signature">()</span><span class="type-signature"></span></h2>
<div class="class-description"><p>The web socket manager handles the lifecycle of one or more websocket servers for communication with the HTTP client.</p>
<p>There are at least two basic types of web socket services provided here:</p>
<ul>
<li>sitewide session state - manages session awareness across multiple interfaces for a session</li>
<li>transition processing - handles message to do with transtions with respect to a sesson and its transition actions.</li>
</ul>
<p>Those sessions stored in <code>going_sessions</code>, send messages that wrap the message data and included the id made for the session
by startup method in this class.</p>
<p>These message have the following form:</p>
<pre class="prettyprint source"><code> let message = {
"ws_id" : ws_id,
"data" : data
}
</code></pre>
<p>In these messages, the stringified data object in <em>data</em> is the data that is being relayed.
Responses to the message should be keyed with the same id.</p></div>
</header>
<article>
<div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="WebSocketManager"><span class="type-signature"></span>new WebSocketManager<span class="signature">()</span><span class="type-signature"></span></h4>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line34">line 34</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Methods</h3>
<h4 class="name" id="_setup_app_ws"><span class="type-signature"></span>_setup_app_ws<span class="signature">(ws, app_wss)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Sets up a websocket message event handler that can be used the client to run messages through the tokenized transition framework.</p>
<p>The message handler parses the body data, which should be a JSON parseable string. This is parsed into the body of the message.</p>
<p>The body shoud have the following fields:</p>
<ul>
<li>message - The message is itself an object with application defined fields. One required field will be <code>server_id</code>.</li>
<li>transition - The name of the transition.</li>
<li>ping_id - for ping message</li>
</ul>
<p>The message handler checks to see if the <code>server_id</code> field on the message.
If the id is not on the object, this method attempts to treat the message as a
ping/pong message. If the field <code>server_id</code> is on the message, then this method calls upon the transition processor's
method, <code>ws_transition</code>, which performs similar operations to the HTTP path handler.</p>
<p>The <code>close</code> event handler is also set up. This calls <code>close_wss_session</code> which remove the descriptor from the <code>going_sessions</code>
table.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>app_wss</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line206">line 206</a>
</li></ul></dd>
</dl>
<h4 class="name" id="_setup_sitewide_ws"><span class="type-signature"></span>_setup_sitewide_ws<span class="signature">(ws, auth_wss)</span><span class="type-signature"></span></h4>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>web socket connection</p></td>
</tr>
<tr>
<td class="name"><code>auth_wss</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line245">line 245</a>
</li></ul></dd>
</dl>
<h4 class="name" id="add_service"><span class="type-signature"></span>add_service<span class="signature">(port)</span><span class="type-signature"> → {Object}</span></h4>
<div class="description">
<p>Calls the framework (node.js) createServer method and then creates a new WebSocket wrapper
with the server as its parameter. Returns the web socket server wrapper.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>port</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line112">line 112</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<ul>
<li>WebSocketServer - the web socket server wrapper.</li>
</ul>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Object</span>
</dd>
</dl>
<h4 class="name" id="add_ws_session"><span class="type-signature"></span>add_ws_session<span class="signature">(ws)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Called by _setup_app_ws.</p>
<p>This method creates an id for the websocket connection and maps the session into <code>going_sessions</code>.
This method then sends a message to the client indicating that the connection has taken place.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>web socket server</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line439">line 439</a>
</li></ul></dd>
</dl>
<h4 class="name" id="close_suspects"><span class="type-signature"></span>close_suspects<span class="signature">()</span><span class="type-signature"></span></h4>
<div class="description">
<p>Closes off client connections that are not responding to pings.</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line544">line 544</a>
</li></ul></dd>
</dl>
<h4 class="name" id="close_wss_session"><span class="type-signature"></span>close_wss_session<span class="signature">(ws)</span><span class="type-signature"> → {boolean}</span></h4>
<div class="description">
<p>Closes out a web socket connection.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>web socket client connection</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line491">line 491</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">boolean</span>
</dd>
</dl>
<h4 class="name" id="do_pings"><span class="type-signature"></span>do_pings<span class="signature">(caller)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Pings the clients to see if they will respond.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>caller</code></td>
<td class="type">
<span class="param-type">function</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line529">line 529</a>
</li></ul></dd>
</dl>
<h4 class="name" id="initialize"><span class="type-signature"></span>initialize<span class="signature">(conf, app)</span><span class="type-signature"></span></h4>
<div class="description">
<p>This method takes in a configuration object which should have a <code>websocket</code> field.
The <code>websocket</code> field in turn must have two fields:</p>
<ul>
<li>port_names - a list of strings that name ports having meaning to the application.</li>
<li>defs - a map of the port names to port numbers.</li>
</ul>
<p>The constructor provides default port handlers, "ws_port", "wss_app_port". But, an application may add to these.</p>
<p>This method add websocket servers for each port identified by <code>port_names</code>. After each port server is created,
this method calls the port handler corresponding to the port name, passing the web socket server wrapper.</p>
<p>The port handlers set up the web socket event handlers for fielding messages and errors.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>conf</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>app</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line72">line 72</a>
</li></ul></dd>
</dl>
<h4 class="name" id="ping"><span class="type-signature"></span>ping<span class="signature">(ws)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Send a ping message to a single client.</p>
<p>This adds a field to the ws, the socket connection wrapper. The field is <code>_app_x_isAlive</code>.
A message containing the <code>_app_x_ws_id</code> is sent to the client. <code>_app_x_ws_id</code> is another
field added to the socket connection wrapper and is used to find the connection wrapper in the
<code>going_sessions</code> table belonging to this class.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>web socket server</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line463">line 463</a>
</li></ul></dd>
</dl>
<h4 class="name" id="ponged"><span class="type-signature"></span>ponged<span class="signature">(ws)</span><span class="type-signature"></span></h4>
<div class="description">
<p>This method must called in response to the ping call in order for the websocket connection to be considered
to be alive.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>web socket server</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line478">line 478</a>
</li></ul></dd>
</dl>
<h4 class="name" id="send_to_ws"><span class="type-signature"></span>send_to_ws<span class="signature">(ws, data)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Given the websocket wrapper with the <code>send</code> method, this send data to the connected client.
The data must be stringifiable.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line172">line 172</a>
</li></ul></dd>
</dl>
<h4 class="name" id="send_ws"><span class="type-signature"></span>send_ws<span class="signature">(ws_id, data)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Send a message on the identified web sockets.</p>
<p>This method creates a wrapper for the actual data being sent and attach it to the data field of the wrapper.
It also puts the id of the wrapper and assigns it as the value to the <code>ws_id</code> field of the message.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws_id</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line513">line 513</a>
</li></ul></dd>
</dl>
<h4 class="name" id="send_ws_outofband"><span class="type-signature"></span>send_ws_outofband<span class="signature">(token_key, data)</span><span class="type-signature"></span></h4>
<div class="description">
<p>This method is a wrapper of the method <code>send_to_ws</code>.
This method pertains to transtion handling, and so it requires the transition
token to find the websocket connection wrapper. It sends any data that can be
stringified.</p>
<p>The <em>outofband</em> part of the name usually refers to the situation in data is sent
at times other than when a transtion action is being performed or before the action
has been completed.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>token_key</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>tansition token</p></td>
</tr>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line420">line 420</a>
</li></ul></dd>
</dl>
<h4 class="name" id="set_contractual_filters"><span class="type-signature"></span>set_contractual_filters<span class="signature">(trans_processor, user_processor, mime_processor)</span><span class="type-signature"></span></h4>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>trans_processor</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>an instance of the class</p></td>
</tr>
<tr>
<td class="name"><code>user_processor</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>mime_processor</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line99">line 99</a>
</li></ul></dd>
</dl>
<h4 class="name" id="setup_app_ws"><span class="type-signature"></span>setup_app_ws<span class="signature">(app_wss)</span><span class="type-signature"></span></h4>
<div class="description">
<p>This method handles the connection event. This method filters out messages that are not on th <code>/shared_auth</code>
path of the web socket. If the connection is on the path, then it completes the connection setup
setting up the handler for events: message, close, error.</p>
<p>Sets up a websocket that can be used the client to run messages through the tokenized transition framework.</p>
<p>Access may be available to a transition engine that is customized to send data messages (in quasi real time) to
the client interfaces.</p>
<p>This method filters out messages that are not on th <code>transitional</code> path of the web socket.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>app_wss</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>a web socket handle</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line150">line 150</a>
</li></ul></dd>
</dl>
<h4 class="name" id="setup_sitewide_ws"><span class="type-signature"></span>setup_sitewide_ws<span class="signature">(auth_wss)</span><span class="type-signature"></span></h4>
<div class="description">
<p>This method handles the connection event. This method filters out messages that are not on th <code>/shared_auth</code>
path of the web socket. If the connection is on the path, then it completes the connection setup
setting up the handler for events: message, close, error.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>auth_wss</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>a web socket handle</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line127">line 127</a>
</li></ul></dd>
</dl>
<h4 class="name" id="start_checking_pings"><span class="type-signature"></span>start_checking_pings<span class="signature">()</span><span class="type-signature"></span></h4>
<div class="description">
<p>Called by <code>add_ws_session</code> if it has not yet been called.
It is possible it will be called again if at some point it was turned off and if
<code>add_ws_session</code> is called.</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line558">line 558</a>
</li></ul></dd>
</dl>
<h4 class="name" id="ws_connection_attempt"><span class="type-signature"></span>ws_connection_attempt<span class="signature">(proc_ws_token, sitewide_socket)</span><span class="type-signature"></span></h4>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>proc_ws_token</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>sitewide_socket</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line337">line 337</a>
</li></ul></dd>
</dl>
<h4 class="name" id="ws_shutdown"><span class="type-signature"></span>ws_shutdown<span class="signature">(ws)</span><span class="type-signature"></span></h4>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"><p>web socket server</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line316">line 316</a>
</li></ul></dd>
</dl>
<h4 class="name" id="ws_sitewide_message_handler"><span class="type-signature"></span>ws_sitewide_message_handler<span class="signature">(data, ws)</span><span class="type-signature"></span></h4>
<div class="description">
<p>Takes the message data and parses as JSON.</p>
<p>If the object produced has a <code>ping_id</code>, this method responds to the message by calling <code>ponged</code>.</p>
<p>The sitewide websocket server locates the websocket session descriptor by using a token field on th message body.
The body must also have an <code>action</code> field. This method provides to action handlers, <em>setup</em> and <em>logout</em>.</p>
<p>The <em>setup</em> pathway adds the web socket server wrapper to the <code>going_ws_sitewide_sessions[token]</code> array.
This method will create the array the first time the token is seen. Ideally, the token will be a session identifier (token),
and will keep connections to the websocket clients.</p>
<p>In a browser, different web socket connections for a single session would be the result of
opening a number of tabs and windows belonging to the session. When the session is ended,
one window or tab will initiate the logout and the rest of the interfaces will receive the <em>logout</em> message
from this handler.</p>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>data</code></td>
<td class="type">
<span class="param-type">Buffer</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>ws</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="lib_websocket.js.html">lib/websocket.js</a>, <a href="lib_websocket.js.html#line270">line 270</a>
</li></ul></dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Namespaces</h3><ul><li><a href="Contractual.html">Contractual</a></li><li><a href="CopiousTransitions.html">CopiousTransitions</a></li><li><a href="DefaultDB.html">DefaultDB</a></li><li><a href="base.html">base</a></li><li><a href="field_validators.html">field_validators</a></li></ul><h3>Classes</h3><ul><li><a href="Contractual.LocalTObjectCache.html">LocalTObjectCache</a></li><li><a href="Contractual.MimeHandling.html">MimeHandling</a></li><li><a href="Contractual.TransitionHandling.html">TransitionHandling</a></li><li><a href="Contractual.UserHandling.html">UserHandling</a></li><li><a href="CopiousTransitions.CopiousTransitions.html">CopiousTransitions</a></li><li><a href="DefaultDB.CustomizationMethodsByApplication.html">CustomizationMethodsByApplication</a></li><li><a href="DefaultDB.FauxInMemStore.html">FauxInMemStore</a></li><li><a href="DefaultDB.FileMapper.html">FileMapper</a></li><li><a href="DefaultDB.FilesAndRelays.html">FilesAndRelays</a></li><li><a href="DefaultDB.FilesAndRelays_base.html">FilesAndRelays_base</a></li><li><a href="DefaultDB.LocalStaticDB.html">LocalStaticDB</a></li><li><a href="DefaultDB.LocalStorageLifeCycle.html">LocalStorageLifeCycle</a></li><li><a href="DefaultDB.LocalStorageSerialization.html">LocalStorageSerialization</a></li><li><a href="DefaultDB.PageableMemStoreElement.html">PageableMemStoreElement</a></li><li><a href="DefaultDB.PersistenceContracts.html">PersistenceContracts</a></li><li><a href="DefaultDB.RemoteMessaging.html">RemoteMessaging</a></li><li><a href="DefaultDB.StaticDBDefault.html">StaticDBDefault</a></li><li><a href="GeneralUserDBWrapperImpl.html">GeneralUserDBWrapperImpl</a></li><li><a href="SessionTokenManager.html">SessionTokenManager</a></li><li><a href="base.DBClass.html">DBClass</a></li><li><a href="base.EndpointManager.html">EndpointManager</a></li><li><a href="base.GeneralAppLifeCycle.html">GeneralAppLifeCycle</a></li><li><a href="base.GeneralAuth.html">GeneralAuth</a></li><li><a href="base.GeneralBusiness.html">GeneralBusiness</a></li><li><a href="base.GeneralDynamic.html">GeneralDynamic</a></li><li><a href="base.GeneralMiddleWare.html">GeneralMiddleWare</a></li><li><a href="base.GeneralStatic.html">GeneralStatic</a></li><li><a href="base.GeneralTransitionEngImpl.html">GeneralTransitionEngImpl</a></li><li><a href="base.SessionManager.html">SessionManager</a></li><li><a href="base.SessionManager_Lite.html">SessionManager_Lite</a></li><li><a href="base.TaggedTransition.html">TaggedTransition</a></li><li><a href="base.TokenTables.html">TokenTables</a></li><li><a href="base.UserMessageEndpoint.html">UserMessageEndpoint</a></li><li><a href="base.WebSocketManager.html">WebSocketManager</a></li><li><a href="field_validators.DataLookupField.html">DataLookupField</a></li><li><a href="field_validators.EmailField.html">EmailField</a></li><li><a href="field_validators.EmailVerifyField.html">EmailVerifyField</a></li><li><a href="field_validators.FieldTest.html">FieldTest</a></li><li><a href="field_validators.FieldValidatorTools.html">FieldValidatorTools</a></li><li><a href="field_validators.ForeignAuth.html">ForeignAuth</a></li><li><a href="field_validators.GeneralValidator.html">GeneralValidator</a></li><li><a href="field_validators.LengthyAlphabetField.html">LengthyAlphabetField</a></li><li><a href="field_validators.LengthyDigitalField.html">LengthyDigitalField</a></li><li><a href="field_validators.LengthyField.html">LengthyField</a></li><li><a href="field_validators.LengthyStringField.html">LengthyStringField</a></li><li><a href="field_validators.PasswordField.html">PasswordField</a></li><li><a href="field_validators.PasswordVerifyField.html">PasswordVerifyField</a></li><li><a href="field_validators.TypeCheckField.html">TypeCheckField</a></li></ul><h3>Global</h3><ul><li><a href="global.html#generate_password_block">generate_password_block</a></li><li><a href="global.html#load_configuration">load_configuration</a></li><li><a href="global.html#load_parameters">load_parameters</a></li><li><a href="global.html#module_top">module_top</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a> on Tue Oct 31 2023 17:32:59 GMT-0700 (Pacific Daylight Time)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>