1d4afb5ceSopenharmony_ci<!DOCTYPE html> 2d4afb5ceSopenharmony_ci<html lang="en"> 3d4afb5ceSopenharmony_ci<head> 4d4afb5ceSopenharmony_ci <meta charset=utf-8 http-equiv="Content-Language" content="en"/> 5d4afb5ceSopenharmony_ci <link rel="stylesheet" type="text/css" href="test.css"/> 6d4afb5ceSopenharmony_ci <script type='text/javascript' src="/lws-common.js"></script> 7d4afb5ceSopenharmony_ci <script type='text/javascript' src='test.js'></script> 8d4afb5ceSopenharmony_ci <title>Minimal Websocket test app</title> 9d4afb5ceSopenharmony_ci</head> 10d4afb5ceSopenharmony_ci 11d4afb5ceSopenharmony_ci<body> 12d4afb5ceSopenharmony_ci<header></header> 13d4afb5ceSopenharmony_ci<article> 14d4afb5ceSopenharmony_ci 15d4afb5ceSopenharmony_ci<table><tr><td> 16d4afb5ceSopenharmony_ci 17d4afb5ceSopenharmony_ci<table width=800px> 18d4afb5ceSopenharmony_ci <tr> 19d4afb5ceSopenharmony_ci <td valign=middle align=center> 20d4afb5ceSopenharmony_ci <a href="https://libwebsockets.org"> 21d4afb5ceSopenharmony_ci <img src="libwebsockets.org-logo.svg"></a> 22d4afb5ceSopenharmony_ci </td> 23d4afb5ceSopenharmony_ci <td><img src="strict-csp.svg"></td> 24d4afb5ceSopenharmony_ci <td> 25d4afb5ceSopenharmony_ci <section class="browser"> 26d4afb5ceSopenharmony_ci <div id=brow>...</div></section> 27d4afb5ceSopenharmony_ci </td> 28d4afb5ceSopenharmony_ci <td width="64" height="64" id="wstransport"></td> 29d4afb5ceSopenharmony_ci <td width="64" height="64" id="transport"></td> 30d4afb5ceSopenharmony_ci </tr> 31d4afb5ceSopenharmony_ci 32d4afb5ceSopenharmony_ci</table> 33d4afb5ceSopenharmony_ci</td></tr> 34d4afb5ceSopenharmony_ci<tr><td colspan=2 align=center> 35d4afb5ceSopenharmony_ciClick <a href="leaf.jpg" target="_blank">Here</a> to 36d4afb5ceSopenharmony_cihave the test server send a big picture by http. 37d4afb5ceSopenharmony_ci</td></tr> 38d4afb5ceSopenharmony_ci<tr><td colspan=2> 39d4afb5ceSopenharmony_ci<div class="tabs"> 40d4afb5ceSopenharmony_ci 41d4afb5ceSopenharmony_ci <div class="tab"> 42d4afb5ceSopenharmony_ci <input type="radio" id="tab-1" name="tab-group-1" checked> 43d4afb5ceSopenharmony_ci <label for="tab-1">Dumb Increment Demo</label> 44d4afb5ceSopenharmony_ci 45d4afb5ceSopenharmony_ci <div class="content"> 46d4afb5ceSopenharmony_ci <div id="dumb" class="group2"> 47d4afb5ceSopenharmony_ci <table> 48d4afb5ceSopenharmony_ci <tr> 49d4afb5ceSopenharmony_ci <td id=wsdi_statustd align=center class="wsstatus"> 50d4afb5ceSopenharmony_ci <span id=wsdi_status>Websocket connection not initialized 51d4afb5ceSopenharmony_ci </span></td> 52d4afb5ceSopenharmony_ci <td><span class="title">dumb increment-protocol</span></td> 53d4afb5ceSopenharmony_ci </tr> 54d4afb5ceSopenharmony_ci <tr> 55d4afb5ceSopenharmony_ci <td class="explain" colspan=2> 56d4afb5ceSopenharmony_ciThe incrementing number is coming from the server at 20Hz and is individual for 57d4afb5ceSopenharmony_cieach connection to the server... try opening a second browser window. 58d4afb5ceSopenharmony_ci<br/><br/> 59d4afb5ceSopenharmony_ciThe button sends a message over the websocket link to ask the server 60d4afb5ceSopenharmony_cito zero just this connection's number. 61d4afb5ceSopenharmony_ci </td> 62d4afb5ceSopenharmony_ci </tr> 63d4afb5ceSopenharmony_ci <tr> 64d4afb5ceSopenharmony_ci <td align=center><div id=number class="bigger"> </div></td> 65d4afb5ceSopenharmony_ci <td align=center> 66d4afb5ceSopenharmony_ci <input type=button id=offset value="Reset counter"> 67d4afb5ceSopenharmony_ci <input type=button id=junk value="Send junk"> 68d4afb5ceSopenharmony_ci </td> 69d4afb5ceSopenharmony_ci </tr> 70d4afb5ceSopenharmony_ci </table> 71d4afb5ceSopenharmony_ci </div> 72d4afb5ceSopenharmony_ci </div> 73d4afb5ceSopenharmony_ci </div> 74d4afb5ceSopenharmony_ci 75d4afb5ceSopenharmony_ci <div class="tab"> 76d4afb5ceSopenharmony_ci <input type="radio" id="tab-2" name="tab-group-1"> 77d4afb5ceSopenharmony_ci <label for="tab-2">Mirror Demo</label> 78d4afb5ceSopenharmony_ci 79d4afb5ceSopenharmony_ci <div class="content"> 80d4afb5ceSopenharmony_ci <div id="mirror" class="group2"> 81d4afb5ceSopenharmony_ci <table> 82d4afb5ceSopenharmony_ci <tr> 83d4afb5ceSopenharmony_ci <td colspan=1 id=wslm_statustd align=center class="wsstatus"> 84d4afb5ceSopenharmony_ci <span id=wslm_status>Websocket connection not initialized</span> 85d4afb5ceSopenharmony_ci </td> 86d4afb5ceSopenharmony_ci <td> 87d4afb5ceSopenharmony_ci <span class="title">lws-mirror-protocol</span> 88d4afb5ceSopenharmony_ci </td> 89d4afb5ceSopenharmony_ci </tr> 90d4afb5ceSopenharmony_ci <tr> 91d4afb5ceSopenharmony_ci <td colspan=2> 92d4afb5ceSopenharmony_ci <div class="explain"> 93d4afb5ceSopenharmony_ciUse the mouse to draw on the canvas below -- all other browser windows open 94d4afb5ceSopenharmony_cion this page see your drawing in realtime and you can see any of theirs as 95d4afb5ceSopenharmony_ciwell. 96d4afb5ceSopenharmony_ci<br/><br/> 97d4afb5ceSopenharmony_ciThe lws-mirror protocol doesn't interpret what is being sent to it, it just 98d4afb5ceSopenharmony_cire-sends it to every other websocket it has a connection with using that 99d4afb5ceSopenharmony_ciprotocol, including the guy who sent the packet. 100d4afb5ceSopenharmony_ci<br/><br/> 101d4afb5ceSopenharmony_ci<b>libwebsockets-test-client</b> joins in by spamming circles on to this 102d4afb5ceSopenharmony_cishared canvas when run. 103d4afb5ceSopenharmony_ci </div> 104d4afb5ceSopenharmony_ci </td> 105d4afb5ceSopenharmony_ci </tr> 106d4afb5ceSopenharmony_ci <tr> 107d4afb5ceSopenharmony_ci <td colspan=2>Drawing color: 108d4afb5ceSopenharmony_ci <select id="color"> 109d4afb5ceSopenharmony_ci <option value=#000000>Black</option> 110d4afb5ceSopenharmony_ci <option value=#0000ff>Blue</option> 111d4afb5ceSopenharmony_ci <option value=#20ff20>Green</option> 112d4afb5ceSopenharmony_ci <option value=#802020>Dark Red</option> 113d4afb5ceSopenharmony_ci </select> 114d4afb5ceSopenharmony_ci </tr> 115d4afb5ceSopenharmony_ci <tr> 116d4afb5ceSopenharmony_ci <td colspan=2 width=500 height=320> 117d4afb5ceSopenharmony_ci <div id="wslm_drawing" class="bgw"></div> 118d4afb5ceSopenharmony_ci </td> 119d4afb5ceSopenharmony_ci </tr> 120d4afb5ceSopenharmony_ci </table> 121d4afb5ceSopenharmony_ci </div> 122d4afb5ceSopenharmony_ci </div> 123d4afb5ceSopenharmony_ci </div> 124d4afb5ceSopenharmony_ci 125d4afb5ceSopenharmony_ci <div class="tab"> 126d4afb5ceSopenharmony_ci <input type="radio" id="tab-3" name="tab-group-1"> 127d4afb5ceSopenharmony_ci <label for="tab-3">Close Testing</label> 128d4afb5ceSopenharmony_ci 129d4afb5ceSopenharmony_ci <div class="content"> 130d4afb5ceSopenharmony_ci<div id="ot" class="group2"> 131d4afb5ceSopenharmony_ci <table> 132d4afb5ceSopenharmony_ci <tr> 133d4afb5ceSopenharmony_ci <td> 134d4afb5ceSopenharmony_ci 135d4afb5ceSopenharmony_ci </td></tr> 136d4afb5ceSopenharmony_ci <tr><td id=ot_statustd align=center class="wsstatus"> 137d4afb5ceSopenharmony_ci <span id=ot_status>Websocket connection not initialized</span> 138d4afb5ceSopenharmony_ci </td> 139d4afb5ceSopenharmony_ci <td colspan=2><span class="title">Open and close testing 140d4afb5ceSopenharmony_ci </span></td> 141d4afb5ceSopenharmony_ci </tr> 142d4afb5ceSopenharmony_ci <tr> 143d4afb5ceSopenharmony_ci<td class="explain" colspan=3 > 144d4afb5ceSopenharmony_ciTo help with open and close testing, you can open and close a connection by 145d4afb5ceSopenharmony_cihand using the buttons.<br> 146d4afb5ceSopenharmony_ci "<b>Close</b>" closes the connection from the browser with code 3000 147d4afb5ceSopenharmony_ci and reason 'Bye!".<br> 148d4afb5ceSopenharmony_ci "<b>Request Server Close</b>" sends a message asking the server to 149d4afb5ceSopenharmony_ciinitiate the close, which it does with code 1001 and reason "Seeya". 150d4afb5ceSopenharmony_ci</td></tr> 151d4afb5ceSopenharmony_ci <tr> 152d4afb5ceSopenharmony_ci <td align=center> 153d4afb5ceSopenharmony_ci <input type="button" id="ot_open_btn" value="Open"></td> 154d4afb5ceSopenharmony_ci <td align=center> 155d4afb5ceSopenharmony_ci <input type="button" id="ot_close_btn" disabled value="Close" ></td> 156d4afb5ceSopenharmony_ci <td align=center> 157d4afb5ceSopenharmony_ci <input type="button" id="ot_req_close_btn" disabled 158d4afb5ceSopenharmony_ci value="Request Server Close" ></td> 159d4afb5ceSopenharmony_ci </tr> 160d4afb5ceSopenharmony_ci 161d4afb5ceSopenharmony_ci</table> 162d4afb5ceSopenharmony_ci 163d4afb5ceSopenharmony_ci</div> 164d4afb5ceSopenharmony_ci </div> 165d4afb5ceSopenharmony_ci </div> 166d4afb5ceSopenharmony_ci 167d4afb5ceSopenharmony_ci <div class="tab"> 168d4afb5ceSopenharmony_ci <input type="radio" id="tab-4" name="tab-group-1"> 169d4afb5ceSopenharmony_ci <label for="tab-4">Server info</label> 170d4afb5ceSopenharmony_ci 171d4afb5ceSopenharmony_ci <div class="content"> 172d4afb5ceSopenharmony_ci<div id="ot" class="group2"> 173d4afb5ceSopenharmony_ci <table> 174d4afb5ceSopenharmony_ci <tr> 175d4afb5ceSopenharmony_ci <td id=s_statustd align=center class="wsstatus"> 176d4afb5ceSopenharmony_ci <div id=s_status>Websocket connection not initialized</div> 177d4afb5ceSopenharmony_ci </td> 178d4afb5ceSopenharmony_ci <td colspan=1> 179d4afb5ceSopenharmony_ci <span class="title">Server Info</span> 180d4afb5ceSopenharmony_ci <input type=button id=pmd value="Test pmd"> 181d4afb5ceSopenharmony_ci 182d4afb5ceSopenharmony_ci </td> 183d4afb5ceSopenharmony_ci </tr><tr> 184d4afb5ceSopenharmony_ci<td class="explain" colspan=2> 185d4afb5ceSopenharmony_ciThis information is sent by the server over a ws[s] link and updated live 186d4afb5ceSopenharmony_ciwhenever the information changes server-side. 187d4afb5ceSopenharmony_ci</td></tr> 188d4afb5ceSopenharmony_ci <tr> 189d4afb5ceSopenharmony_ci <td align=center colspan=2><div id=servinfo></div></td> 190d4afb5ceSopenharmony_ci </tr> 191d4afb5ceSopenharmony_ci <tr> 192d4afb5ceSopenharmony_ci <td align=center colspan=2><div id=conninfo class="conninfo"></div></td> 193d4afb5ceSopenharmony_ci </tr> 194d4afb5ceSopenharmony_ci</table> 195d4afb5ceSopenharmony_ci</div> 196d4afb5ceSopenharmony_ci </div> 197d4afb5ceSopenharmony_ci </div> 198d4afb5ceSopenharmony_ci 199d4afb5ceSopenharmony_ci <div class="tab"> 200d4afb5ceSopenharmony_ci <input type="radio" id="tab-5" name="tab-group-1"> 201d4afb5ceSopenharmony_ci <label for="tab-5">POST</label> 202d4afb5ceSopenharmony_ci 203d4afb5ceSopenharmony_ci <div class="content"> 204d4afb5ceSopenharmony_ci<div id="ot" class="group2"> 205d4afb5ceSopenharmony_ci <table width=100%> 206d4afb5ceSopenharmony_ci <tr> 207d4afb5ceSopenharmony_ci <td colspan=1> 208d4afb5ceSopenharmony_ci<span class="title">POST Form testing</span> 209d4afb5ceSopenharmony_ci </td> 210d4afb5ceSopenharmony_ci </tr><tr> 211d4afb5ceSopenharmony_ci<td class="explain" colspan=2> 212d4afb5ceSopenharmony_ciThis tests POST handling in lws. 213d4afb5ceSopenharmony_ci</td></tr> 214d4afb5ceSopenharmony_ci <tr> 215d4afb5ceSopenharmony_ci <td align=center colspan=2 class=tdform><div id=postinfo> 216d4afb5ceSopenharmony_ci FORM 1: send with urlencoded POST body args<br> 217d4afb5ceSopenharmony_ci <form action="formtest" method="post"> 218d4afb5ceSopenharmony_ci <span class="f12">Some text: </span> 219d4afb5ceSopenharmony_ci <input type="text" name="text" value="Give me some text"><br> 220d4afb5ceSopenharmony_ci <input type="submit" name="send" value="Send the form"> 221d4afb5ceSopenharmony_ci </form> 222d4afb5ceSopenharmony_ci </div></td> 223d4afb5ceSopenharmony_ci </tr> 224d4afb5ceSopenharmony_ci 225d4afb5ceSopenharmony_ci 226d4afb5ceSopenharmony_ci <tr> 227d4afb5ceSopenharmony_ci <td align=center colspan=2 class=tdform><div id=postinfo > 228d4afb5ceSopenharmony_ci FORM 2: send with multipart/form-data<br> 229d4afb5ceSopenharmony_ci (can handle file upload, test limited to 100KB)<br> 230d4afb5ceSopenharmony_ci <form name=multipart action="formtest" method="post" 231d4afb5ceSopenharmony_ci enctype="multipart/form-data"> 232d4afb5ceSopenharmony_ci <span class="f12">Some text: </span> 233d4afb5ceSopenharmony_ci <input type="text" name="text" value="Give me some text"> 234d4afb5ceSopenharmony_ci<br> 235d4afb5ceSopenharmony_ci <input type="file" name="file" id="file" size="20"> 236d4afb5ceSopenharmony_ci <span id=file_info class="f12"></span><br> 237d4afb5ceSopenharmony_ci <input type="submit" id="upload" name="upload" disabled=1 value="Upload"> 238d4afb5ceSopenharmony_ci </form> 239d4afb5ceSopenharmony_ci </div></td> 240d4afb5ceSopenharmony_ci </tr> 241d4afb5ceSopenharmony_ci 242d4afb5ceSopenharmony_ci</table> 243d4afb5ceSopenharmony_ci</div> 244d4afb5ceSopenharmony_ci </div> 245d4afb5ceSopenharmony_ci </div> 246d4afb5ceSopenharmony_ci 247d4afb5ceSopenharmony_ci</div> 248d4afb5ceSopenharmony_ci</td></tr></table> 249d4afb5ceSopenharmony_ci 250d4afb5ceSopenharmony_ciLooking for support? 251d4afb5ceSopenharmony_ci<a href="https://libwebsockets.org">https://libwebsockets.org</a>, 252d4afb5ceSopenharmony_ci<a href="https://github.com/warmcat/libwebsockets"> 253d4afb5ceSopenharmony_ci https://github.com/warmcat/libwebsockets</a></a><br/> 254d4afb5ceSopenharmony_ciJoin the mailing list: 255d4afb5ceSopenharmony_ci<a href="https://libwebsockets.org/mailman/listinfo/libwebsockets"> 256d4afb5ceSopenharmony_ci https://libwebsockets.org/mailman/listinfo/libwebsockets</a> 257d4afb5ceSopenharmony_ci 258d4afb5ceSopenharmony_ci</article> 259d4afb5ceSopenharmony_ci 260d4afb5ceSopenharmony_ci</body> 261d4afb5ceSopenharmony_ci</html> 262