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 };