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

     1  /* eslint camelcase: 0 */
     2  'use strict';
     3  
     4  var http = require('http');
     5  var nodeStatic = require('node-static');
     6  var sockjs = require('./sockjs_app');
     7  var url = require('url');
     8  var path = require('path');
     9  var debug = require('debug')('sockjs-client:test-server:main');
    10  
    11  var port = process.env.ZUUL_PORT || 8081;
    12  var clientOptions = {
    13    // Address of a sockjs test server.
    14    url: 'http://localhost:' + port,
    15    sockjs_opts: {
    16        // websocket:false
    17        info: {cookie_needed: false}
    18    }
    19  };
    20  
    21  var staticDir = new nodeStatic.Server(path.join(__dirname, '../html'), { cache: 0 });
    22  
    23  var server = http.createServer();
    24  server.addListener('request', function(req, res) {
    25    if ( /\/slow-script.js/.test(req.url) ) {
    26      res.setHeader('content-type', 'application/javascript');
    27      res.writeHead(200);
    28      setTimeout(function() {
    29          res.end('var a = 1;\n');
    30      }, 500);
    31    } else if ( /\/streaming.txt/.test(req.url) ) {
    32      res.setHeader('content-type', 'text/plain');
    33      res.setHeader('Access-Control-Allow-Origin', '*');
    34  
    35      res.writeHead(200);
    36      res.write(new Array(2049).join('a') + '\n');
    37      setTimeout(function() {
    38          res.end('b\n');
    39      }, 250);
    40    } else if ( /\/simple.txt/.test(req.url) ) {
    41      res.setHeader('content-type', 'text/plain');
    42      res.setHeader('Access-Control-Allow-Origin', '*');
    43      res.writeHead(200);
    44      res.end(new Array(2049).join('a') + '\nb\n');
    45    } else if (req.url === '/config.js') {
    46      if (req.headers.referer) {
    47        var parsedOrigin = url.parse(req.headers.referer);
    48        clientOptions.url = parsedOrigin.protocol + '//' + parsedOrigin.hostname + ':' + port;
    49      }
    50      res.setHeader('content-type', 'application/javascript');
    51      res.writeHead(200);
    52      res.end('var clientOptions = ' +
    53              JSON.stringify(clientOptions) + ';');
    54    } else if (req.url === '/domain.js') {
    55      res.setHeader('content-type', 'application/javascript');
    56      res.writeHead(200);
    57      res.end('document.domain = document.domain;');
    58    } else {
    59      staticDir.serve(req, res);
    60    }
    61  });
    62  server.addListener('upgrade', function(req, res){
    63    console.log('upgrade kill');
    64    res.end();
    65  });
    66  
    67  sockjs.install({
    68    sockjs_url: '/lib/sockjs.js',
    69    websocket: true,
    70    log: function (severity, message) {
    71      debug('[%s] %s', severity, message);
    72    }
    73  }, server);
    74  
    75  console.log(' [*] Listening on', port);
    76  server.listen(port);