Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Side by Side Diff: talk/examples/peerconnection/server/server_test.html

Issue 1235563006: Move talk/examples/* to webrtc/examples. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: 201508051337 Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <html>
2 <head>
3 <title>PeerConnection server test page</title>
4
5 <script>
6 var request = null;
7 var hangingGet = null;
8 var localName;
9 var server;
10 var my_id = -1;
11 var other_peers = {};
12 var message_counter = 0;
13
14 function trace(txt) {
15 var elem = document.getElementById("debug");
16 elem.innerHTML += txt + "<br>";
17 }
18
19 function handleServerNotification(data) {
20 trace("Server notification: " + data);
21 var parsed = data.split(',');
22 if (parseInt(parsed[2]) != 0)
23 other_peers[parseInt(parsed[1])] = parsed[0];
24 }
25
26 function handlePeerMessage(peer_id, data) {
27 ++message_counter;
28 var str = "Message from '" + other_peers[peer_id] + "'&nbsp;";
29 str += "<span id='toggle_" + message_counter + "' onclick='toggleMe(this);' ";
30 str += "style='cursor: pointer'>+</span><br>";
31 str += "<blockquote id='msg_" + message_counter + "' style='display:none'>";
32 str += data + "</blockquote>";
33 trace(str);
34 if (document.getElementById("loopback").checked) {
35 if (data.search("offer") != -1) {
36 // In loopback mode, if DTLS is enabled, notify the client to disable it.
37 // Otherwise replace the offer with an answer.
38 if (data.search("fingerprint") != -1)
39 data = data.replace("offer", "offer-loopback");
40 else
41 data = data.replace("offer", "answer");
42 }
43 sendToPeer(peer_id, data);
44 }
45 }
46
47 function GetIntHeader(r, name) {
48 var val = r.getResponseHeader(name);
49 return val != null && val.length ? parseInt(val) : -1;
50 }
51
52 function hangingGetCallback() {
53 try {
54 if (hangingGet.readyState != 4)
55 return;
56 if (hangingGet.status != 200) {
57 trace("server error: " + hangingGet.statusText);
58 disconnect();
59 } else {
60 var peer_id = GetIntHeader(hangingGet, "Pragma");
61 if (peer_id == my_id) {
62 handleServerNotification(hangingGet.responseText);
63 } else {
64 handlePeerMessage(peer_id, hangingGet.responseText);
65 }
66 }
67
68 if (hangingGet) {
69 hangingGet.abort();
70 hangingGet = null;
71 }
72
73 if (my_id != -1)
74 window.setTimeout(startHangingGet, 0);
75 } catch (e) {
76 trace("Hanging get error: " + e.description);
77 }
78 }
79
80 function startHangingGet() {
81 try {
82 hangingGet = new XMLHttpRequest();
83 hangingGet.onreadystatechange = hangingGetCallback;
84 hangingGet.ontimeout = onHangingGetTimeout;
85 hangingGet.open("GET", server + "/wait?peer_id=" + my_id, true);
86 hangingGet.send();
87 } catch (e) {
88 trace("error" + e.description);
89 }
90 }
91
92 function onHangingGetTimeout() {
93 trace("hanging get timeout. issuing again.");
94 hangingGet.abort();
95 hangingGet = null;
96 if (my_id != -1)
97 window.setTimeout(startHangingGet, 0);
98 }
99
100 function signInCallback() {
101 try {
102 if (request.readyState == 4) {
103 if (request.status == 200) {
104 var peers = request.responseText.split("\n");
105 my_id = parseInt(peers[0].split(',')[1]);
106 trace("My id: " + my_id);
107 for (var i = 1; i < peers.length; ++i) {
108 if (peers[i].length > 0) {
109 trace("Peer " + i + ": " + peers[i]);
110 var parsed = peers[i].split(',');
111 other_peers[parseInt(parsed[1])] = parsed[0];
112 }
113 }
114 startHangingGet();
115 request = null;
116 }
117 }
118 } catch (e) {
119 trace("error: " + e.description);
120 }
121 }
122
123 function signIn() {
124 try {
125 request = new XMLHttpRequest();
126 request.onreadystatechange = signInCallback;
127 request.open("GET", server + "/sign_in?" + localName, true);
128 request.send();
129 } catch (e) {
130 trace("error: " + e.description);
131 }
132 }
133
134 function sendToPeer(peer_id, data) {
135 if (my_id == -1) {
136 alert("Not connected");
137 return;
138 }
139 if (peer_id == my_id) {
140 alert("Can't send a message to oneself :)");
141 return;
142 }
143 var r = new XMLHttpRequest();
144 r.open("POST", server + "/message?peer_id=" + my_id + "&to=" + peer_id,
145 false);
146 r.setRequestHeader("Content-Type", "text/plain");
147 r.send(data);
148 r = null;
149 }
150
151 function connect() {
152 localName = document.getElementById("local").value.toLowerCase();
153 server = document.getElementById("server").value.toLowerCase();
154 if (localName.length == 0) {
155 alert("I need a name please.");
156 document.getElementById("local").focus();
157 } else {
158 document.getElementById("connect").disabled = true;
159 document.getElementById("disconnect").disabled = false;
160 document.getElementById("send").disabled = false;
161 signIn();
162 }
163 }
164
165 function disconnect() {
166 if (request) {
167 request.abort();
168 request = null;
169 }
170
171 if (hangingGet) {
172 hangingGet.abort();
173 hangingGet = null;
174 }
175
176 if (my_id != -1) {
177 request = new XMLHttpRequest();
178 request.open("GET", server + "/sign_out?peer_id=" + my_id, false);
179 request.send();
180 request = null;
181 my_id = -1;
182 }
183
184 document.getElementById("connect").disabled = false;
185 document.getElementById("disconnect").disabled = true;
186 document.getElementById("send").disabled = true;
187 }
188
189 window.onbeforeunload = disconnect;
190
191 function send() {
192 var text = document.getElementById("message").value;
193 var peer_id = parseInt(document.getElementById("peer_id").value);
194 if (!text.length || peer_id == 0) {
195 alert("No text supplied or invalid peer id");
196 } else {
197 sendToPeer(peer_id, text);
198 }
199 }
200
201 function toggleMe(obj) {
202 var id = obj.id.replace("toggle", "msg");
203 var t = document.getElementById(id);
204 if (obj.innerText == "+") {
205 obj.innerText = "-";
206 t.style.display = "block";
207 } else {
208 obj.innerText = "+";
209 t.style.display = "none";
210 }
211 }
212
213 </script>
214
215 </head>
216 <body>
217 Server: <input type="text" id="server" value="http://localhost:8888" /><br>
218 <input type="checkbox" id="loopback" checked="checked"/> Loopback (just send
219 received messages right back)<br>
220 Your name: <input type="text" id="local" value="my_name"/>
221 <button id="connect" onclick="connect();">Connect</button>
222 <button disabled="true" id="disconnect"
223 onclick="disconnect();">Disconnect</button>
224 <br>
225 <table><tr><td>
226 Target peer id: <input type="text" id="peer_id" size="3"/></td><td>
227 Message: <input type="text" id="message"/></td><td>
228 <button disabled="true" id="send" onclick="send();">Send</button>
229 </td></tr></table>
230 <button onclick="document.getElementById('debug').innerHTML='';">
231 Clear log</button>
232
233 <pre id="debug">
234 </pre>
235 <br><hr>
236 </body>
237 </html>
OLDNEW
« no previous file with comments | « talk/examples/peerconnection/server/peer_channel.cc ('k') | talk/examples/peerconnection/server/utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698