<!doctype html> <html><head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="http://cdn.jsdelivr.net/sockjs/1.0.1/sockjs.min.js"></script> <script src="http://cdn.sockjs.org/websocket-multiplex-0.1.js"></script> <style> .box { width: 300px; float: left; margin: 0 20px 0 20px; } .box div, .box input { border: 1px solid; -moz-border-radius: 4px; border-radius: 4px; width: 100%; padding: 0px; margin: 5px; } .box div { border-color: grey; height: 300px; overflow: auto; } .box input { height: 30px; } h1 { margin-left: 75px; } body { background-color: #F0F0F0; font-family: "Arial"; } </style> </head><body lang="en"> <h1>SockJS Multiplex example</h1> <div id="first" class="box"> <div></div> <form><input autocomplete="off" value="Type here..."></input></form> </div> <div id="second" class="box"> <div></div> <form><input autocomplete="off"></input></form> </div> <div id="third" class="box"> <div></div> <form><input autocomplete="off"></input></form> </div> <script> // Pipe - convenience wrapper to present data received from an // object supporting WebSocket API in an html element. And the other // direction: data typed into an input box shall be sent back. var pipe = function(ws, el_name) { var div = $(el_name + ' div'); var inp = $(el_name + ' input'); var form = $(el_name + ' form'); var print = function(m, p) { p = (p === undefined) ? '' : JSON.stringify(p); div.append($("<code>").text(m + ' ' + p)); div.append($("<br>")); div.scrollTop(div.scrollTop() + 10000); }; ws.onopen = function() {print('[*] open', ws.protocol);}; ws.onmessage = function(e) {print('[.] message', e.data);}; ws.onclose = function() {print('[*] close');}; form.submit(function() { print('[ ] sending', inp.val()); ws.send(inp.val()); inp.val(''); return false; }); }; var sockjs_url = '/multiplex'; var sockjs = new SockJS(sockjs_url); var multiplexer = new WebSocketMultiplex(sockjs); var ann = multiplexer.channel('ann'); var bob = multiplexer.channel('bob'); var carl = multiplexer.channel('carl'); pipe(ann, '#first'); pipe(bob, '#second'); pipe(carl, '#third'); $('#first input').focus(); </script> </body></html>