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