github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/themes/wind/static/libs/sockjs-client-1.1.0/tests/support/sockjs_app.js (about)

     1  /* eslint camelcase: 0 */
     2  'use strict';
     3  var sockjs = require('sockjs');
     4  var debug = require('debug')('sockjs-client:test-server:app');
     5  
     6  exports.install = function(opts, server) {
     7    var sjs_echo = sockjs.createServer(opts);
     8    sjs_echo.on('connection', function(conn) {
     9      debug('    [+] echo open    ' + conn);
    10      conn.on('close', function() {
    11        debug('    [-] echo close   ' + conn);
    12      });
    13      conn.on('data', function(m) {
    14        var d = JSON.stringify(m);
    15        debug('    [ ] echo message ' + conn,
    16                    d.slice(0, 64) +
    17                    ((d.length > 64) ? '...' : ''));
    18        conn.write(m);
    19      });
    20    });
    21  
    22    var sjs_close = sockjs.createServer(opts);
    23    sjs_close.on('connection', function(conn) {
    24      debug('    [+] close open    ' + conn);
    25      conn.close(3000, 'Go away!');
    26      conn.on('close', function() {
    27        debug('    [-] close close   ' + conn);
    28      });
    29    });
    30  
    31    var sjs_ticker = sockjs.createServer(opts);
    32    sjs_ticker.on('connection', function(conn) {
    33      debug('    [+] ticker open   ' + conn);
    34      var tref;
    35      var schedule = function() {
    36        conn.write('tick!');
    37        tref = setTimeout(schedule, 1000);
    38      };
    39      tref = setTimeout(schedule, 1000);
    40      conn.on('close', function() {
    41        clearTimeout(tref);
    42        debug('    [-] ticker close   ' + conn);
    43      });
    44    });
    45  
    46    var broadcast = {};
    47    var sjs_broadcast = sockjs.createServer(opts);
    48    sjs_broadcast.on('connection', function(conn) {
    49      debug('    [+] broadcast open ' + conn);
    50      broadcast[conn.id] = conn;
    51      conn.on('close', function() {
    52        delete broadcast[conn.id];
    53        debug('    [-] broadcast close' + conn);
    54      });
    55      conn.on('data', function(m) {
    56        debug('    [-] broadcast message', m);
    57        for(var id in broadcast) {
    58            broadcast[id].write(m);
    59        }
    60      });
    61    });
    62  
    63    var sjs_amplify = sockjs.createServer(opts);
    64    sjs_amplify.on('connection', function(conn) {
    65      debug('    [+] amp open    ' + conn);
    66      conn.on('close', function() {
    67        debug('    [-] amp close   ' + conn);
    68      });
    69      conn.on('data', function(m) {
    70        var n = Math.floor(Number(m));
    71        n = (n > 0 && n < 19) ? n : 1;
    72        debug('    [ ] amp message: 2^' + n);
    73        conn.write(new Array(Math.pow(2, n) + 1).join('x'));
    74      });
    75    });
    76  
    77  
    78    sjs_echo.installHandlers(server, {prefix: '/echo',
    79                                      response_limit: 4096});
    80    sjs_echo.installHandlers(server, {prefix: '/disabled_websocket_echo',
    81                                      websocket: false});
    82    sjs_echo.installHandlers(server, {prefix: '/cookie_needed_echo',
    83                                      jsessionid: true});
    84    sjs_close.installHandlers(server, {prefix: '/close'});
    85    sjs_ticker.installHandlers(server, {prefix: '/ticker'});
    86    sjs_amplify.installHandlers(server, {prefix: '/amplify'});
    87    sjs_broadcast.installHandlers(server, {prefix: '/broadcast'});
    88  };