| <!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> |