Blame view

node_modules/sockjs/examples/multiplex/index.html 2.81 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  <!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>