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">&nbsp;
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