github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/public/libs/sockjs-client-1.1.0/tests/lib/test-utils.js (about)

     1  'use strict';
     2  
     3  var SockJS = require('../../lib/entry')
     4    , iframeUtils = require('../../lib/utils/iframe')
     5    , urlUtils = require('../../lib/utils/url')
     6    , random = require('../../lib/utils/random')
     7    ;
     8  
     9  var MPrefix = '_sockjs_global';
    10  
    11  module.exports = {
    12    getSameOriginUrl: function () {
    13      if (global.location) {
    14        return urlUtils.getOrigin(global.location.href);
    15      }
    16      return /^v0\.(?:8|10)/.test(process.version)
    17        ? 'http://localhost:8081'
    18        : 'http://[::1]:8081';
    19    }
    20  
    21  , getCrossOriginUrl: function () {
    22      if (global.clientOptions) {
    23        return global.clientOptions.url;
    24      }
    25      return null;
    26    }
    27  
    28  , getUrl: function (path) {
    29      return /^http/.test(path) ? path : this.getSameOriginUrl() + path;
    30    }
    31  
    32  , newSockJs: function (path, transport) {
    33      return new SockJS(this.getUrl(path), null, { transports: transport });
    34    }
    35  
    36  , createHook: function () {
    37      var windowId = 'a' + random.string(8);
    38      if (!global[MPrefix]) {
    39        var map = {};
    40        global[MPrefix] = function(id) {
    41          if (!(id in map)) {
    42            map[id] = {
    43              id: id,
    44              del: function() {
    45                delete map[id];
    46              }
    47            };
    48          }
    49          return map[id];
    50        };
    51      }
    52      return global[MPrefix](windowId);
    53    }
    54  
    55  , createIframe: function (path) {
    56      path = path || '/iframe.html';
    57      var hook = this.createHook();
    58      hook.iobj = iframeUtils.createIframe(path + '?a=' + random.number(1000) + '#' + hook.id, function () {
    59        throw new Error('iframe error');
    60      });
    61      return hook;
    62    }
    63  };