[0001]
[0002]
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195]
[0196]
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203]
[0204]
[0205]
[0206]
[0207]
[0208]
[0209]
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218]
[0219]
[0220]
[0221]
[0222]
[0223]
[0224]
[0225]
[0226]
[0227]
[0228]
[0229]
[0230]
[0231]
[0232]
<title>WebSocket directory read-me</title>
<style>
@media screen { a[target=_blank]::after { font-size:80%; content:"\2924"; } }
</style>
<div style="max-width:60em;">

<noscript>
<span style="background-color:#ffff00;font-style:bold;font-size:120%;">&nbsp;JavaScript required (unsurprisingly)!&nbsp;</span>
</noscript>

<p> The <b>WebSocket</b> library, development utilities and simple example
applications (scripts) demonstrating the basics of WASD WebSocket programming
and use of the library.

<p><b>Does this browser support WebSocket?&nbsp;
<span id="websocket_yes"
style="background-color:#00ff00;font-size:120%;display:none;">
&nbsp;YES&nbsp;
</span>
<span id="websocket_no"
style="background-color:#ff0000;font-size:120%;display:inline;">
&nbsp;NO!&nbsp;
</span>
</b>

<script language="JavaScript">
document.write('<br /><i>' + navigator.userAgent + '</i>');
function reportWebSocketSupport()
{
   if ('WebSocket' in window)
   {
      document.getElementById('websocket_yes').style.display = 'inline';
      document.getElementById('websocket_no').style.display = 'none';
   }
}
if (window.addEventListener)
   window.addEventListener('load', reportWebSocketSupport, false);
else
if (window.attachEvent)
   window.attachEvent('onload', reportWebSocketSupport);
</script>

<p> See
<a target="_blank" href="http://autobahn.ws/testsuite/reports/clients/index.html"
>http://autobahn.ws/testsuite/reports/clients/index.html</a> for
<u>browser compliance</u> test results.

<p> More information may be found in
<a target="_blank" href="/wasd_root/doc/scripting/scripting_0500.html">
Scripting &nbsp;&mdash;&nbsp; 5 - WebSocket</a>.

<p>
<style>td,th{vertical-align:top;}</style>
<table cellpadding="5" cellspacing="0" border="1"
style="border-collapse:collapse;border:1px solid black;">

<tr><th colspan="3">WebSocket</th></tr>
<tr><th>Demonstration</th><th>Source&nbsp;Code</th><th>Description</th></tr>

<tr>
<td></td>
<td>
<a href="/wasd_root/src/websocket/wsLIB.c">wsLIB.c</a>
<br><a href="/wasd_root/src/websocket/wsLIB.h">wsLIB.h</a>
</td>
<td>
The WebSocket library.  This abstracts most of the WebSocket protocol into
callable functions suitable for the WASD WebSocket scripting environment.
</td>
</tr>

<tr>
<td></td>
<td>
<a href="/wasd_root/src/websocket/wsLIBcl.c">wsLIBcl.c</a>
</td>
<td>
The WebSocket client library.  Provides functionality to TCP connect to a
server host and port and undertake a WebSocket upgrade handshake.  It is less
intended to be a real-world client library than a vehicle for bench-testing the
WASD WebSocket and WSLIB.C functionality.
</td>
</tr>

<tr>
<td></td>
<td>
<a href="/wasd_root/src/websocket/autobahn.c">autobahn.c</a>
</td>
<td>
Autobahn
(<a target="_blank" href="http://autobahn.ws/testsuite">http://autobahn.ws/testsuite</a>)
is a sophisticated, comprehensive and indepdendent test suite powered by Python
that validates WebSocket behaviour, particularly in corner cases.  This
AUTOBAHN utility/script has been used during WASD WebSocket environment
development and testing.  WASD v10.3.0 WebSocket and wsLIB v1.0.7 passes
<i>all</i> Autobahn v0.5.5 tests
(see <a target="_blank" href="autobahn.pdf">autobahn.pdf</a>)
</td>
</tr>

<tr>
<td></td>
<td>
<a href="/wasd_root/src/websocket/wsb.c">wsb.c</a>
<br><a href="/wasd_root/src/websocket/ws_bench.c">ws_bench.c</a>
</td>
<td>
WASD WebSocket environment development test-bench exerciser and gremlin
inducing client/script. It can also be used as an effective measure of the raw
WebSocket message throughput a particular hardware+VMS+TCP/IP+WASD platform can
support
</td>
</tr>

<tr>
<td>[<a target="_blank" href="ws_chat.html">ws_chat.html</a>]</td>
<td>
<a href="/wasd_root/src/websocket/ws_chat.c">ws_chat.c</a>
</td>
<td>
What can be said about this classic, collaborative application?
</td>
</tr>

<tr>
<td>[<a target="_blank" href="ws_echo.html">ws_echo.html</a>]</td>
<td>
<a href="/wasd_root/src/websocket/ws_echo.c">ws_echo.c</a>
</td>
<td>
What was that I just said?  Uses VMS data descriptors.
</td>
</tr>

<tr>
<td>[<a target="_blank" href="ws_mouse.html">ws_mouse.html</a>]</td>
<td>
<a href="/wasd_root/src/websocket/ws_mouse.c">ws_mouse.c</a>
</td>
<td>
Distributing your mouse coordinates.
</td>
</tr>

<tr>
<td>[ws_ptd.html]</td>
<td>
ws_ptd.c
</td>
<td>
The Pseudo-Terminal Driver example has been replaced with the fully-functional
VT102 terminal emulator DCLinabox. See
<a href="http://wasd.vsm.com.au/wasd_root/src/dclinabox/">http://wasd.vsm.com.au/wasd_root/src/dclinabox/</a>
for detail and
<a href="http://wasd.vsm.com.au/wasd/">http://wasd.vsm.com.au/wasd/</a>
for download.
</td>
</tr>

</table>

<a name="RawSocket"><p></a>
<script>if (window.location.hash) document.writeln('<br>');</script>

A WASD <b>&quot;Raw&quot;Socket</b> is a variant of, and is heavily based on,
the WASD WebSocket infrastructure.  It allows a service (listening host and
port) to accept a connection and <b>immediately</b> activate a configured WASD
CGIplus script (in much the same manner as a standard WebSocket script) to
service that connection.  Routine library and example applications.

<p> More information may be found in
<a target="_blank" href="/wasd_root/doc/scripting/scripting_0500.html#02d052cf">
Scripting &nbsp;&mdash;&nbsp; 5.8 - RawSocket</a>.

<p>
<style>td,th{vertical-align:top;}</style>
<table cellpadding="5" cellspacing="0" border="1"
style="border-collapse:collapse;border:1px solid black;">

<tr><th colspan="3">&quot;Raw&quot;Socket</th></tr>
<tr><th>Demonstration</th><th>Source&nbsp;Code</th><th>Description</th></tr>

<tr>
<td></td>
<td>
<a href="/wasd_root/src/websocket/rawLIB.c">rawLIB.c</a>
<br><a href="/wasd_root/src/websocket/rawLIB.h">rawLIB.h</a>
</td>
<td>
The RawSocket library.  This abstracts most of the required functionality for
interacting with the CGIplus environment and performing asynchronous I/O into
callable functions suitable for the WASD RawSocket scripting environment.
</td>
</tr>

<tr>
<td>telnet client</td>
<td>
<a href="/wasd_root/src/websocket/raw_chat.c">raw_chat.c</a>
</td>
<td>
This classic, collaborative application &ndash; again &ndash; this time using
a WASD RawSocket.
</td>
</tr>

<tr>
<td>telnet client</td>
<td>
<a href="/wasd_root/src/websocket/raw_echo.c">raw_echo.c</a>
</td>
<td>
What was that I just said over a &quot;raw&quot; socket?  Uses VMS data
descriptors.
</td>
</tr>

<tr>
<td>telnet client</td>
<td>
<a href="/wasd_root/src/websocket/raw_ptd.c">raw_ptd.c</a>
</td>
<td>
This Pseudo-Terminal Driver example behaves as a simple telnet server. 
Definitely not intended for production!
</td>
</tr>

</table>

</div>