mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-01 16:09:01 +08:00
99 lines
2.9 KiB
HTML
99 lines
2.9 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<title>WebSocket Test</title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<style type="text/css">
|
||
body {
|
||
background-color: #cde; margin: 0;
|
||
padding: 0; font: 14px Helvetica, Arial, sans-serif;
|
||
}
|
||
div.content {
|
||
width: 800px; margin: 2em auto; padding: 20px 50px;
|
||
background-color: #fff; border-radius: 1em;
|
||
}
|
||
#messages {
|
||
border: 2px solid #fec; border-radius: 1em;
|
||
height: 10em; overflow: scroll; padding: 0.5em 1em;
|
||
}
|
||
a:link, a:visited { color: #69c; text-decoration: none; }
|
||
@media (max-width: 700px) {
|
||
body { background-color: #fff; }
|
||
div.content {
|
||
width: auto; margin: 0 auto; border-radius: 0;
|
||
padding: 1em;
|
||
}
|
||
}
|
||
</style>
|
||
|
||
<script language="javascript" type="text/javascript">
|
||
|
||
var rooms = [];
|
||
var ws = new WebSocket('ws://' + location.host + '/ws');
|
||
|
||
if (!window.console) { window.console = { log: function() {} } };
|
||
|
||
ws.onopen = function(ev) { console.log(ev); };
|
||
ws.onerror = function(ev) { console.log(ev); };
|
||
ws.onclose = function(ev) { console.log(ev); };
|
||
ws.onmessage = function(ev) {
|
||
console.log(ev);
|
||
var m = (ev.data || '').match(/^(\S+) (.+)/);
|
||
if (m[1] == 'id') {
|
||
document.getElementById('my_id').innerText = m[2];
|
||
} else if (m[1] == 'msg') {
|
||
var div = document.createElement('div');
|
||
div.innerHTML = m[2];
|
||
document.getElementById('messages').appendChild(div);
|
||
}
|
||
};
|
||
|
||
window.onload = function() {
|
||
document.getElementById('send_button').onclick = function(ev) {
|
||
var msg = document.getElementById('send_input').value;
|
||
ws.send('msg ' + msg);
|
||
};
|
||
document.getElementById('room_sel').onchange = function(ev) {
|
||
var roomName = this.value || '?';
|
||
ws.send('join ' + roomName);
|
||
};
|
||
};
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<div class="content">
|
||
<h1>Websocket PubSub Demonstration</h1>
|
||
|
||
<p>
|
||
This page demonstrates how Mongoose web server could be used to implement
|
||
<a href="http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern">
|
||
publish–subscribe pattern</a>. Open this page in several browser
|
||
windows. Each window initiates persistent
|
||
<a href="http://en.wikipedia.org/wiki/WebSocket">WebSocket</a>
|
||
connection with Mongoose, making each browser window a websocket client.
|
||
Join a room, send messages, and see messages sent by other clients.
|
||
</p>
|
||
|
||
<p>
|
||
My ID: <b><span id="my_id"></b></span>
|
||
</p>
|
||
<p>
|
||
Join room: <select id="room_sel">
|
||
<option value="">-- select room -- </option>
|
||
<option>A</option>
|
||
<option>B</option>
|
||
</select>
|
||
</p>
|
||
|
||
<div id="messages">
|
||
</div>
|
||
|
||
<p>
|
||
<input type="text" id="send_input" />
|
||
<button id="send_button">Send Message</button>
|
||
</p>
|
||
</div>
|
||
</body>
|
||
</html>
|