First commit
This commit is contained in:
87
hGameTest/node_modules/sockjs-client/lib/transport/receiver/htmlfile.js
generated
vendored
Normal file
87
hGameTest/node_modules/sockjs-client/lib/transport/receiver/htmlfile.js
generated
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
'use strict';
|
||||
|
||||
var inherits = require('inherits')
|
||||
, iframeUtils = require('../../utils/iframe')
|
||||
, urlUtils = require('../../utils/url')
|
||||
, EventEmitter = require('events').EventEmitter
|
||||
, random = require('../../utils/random')
|
||||
;
|
||||
|
||||
var debug = function() {};
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
debug = require('debug')('sockjs-client:receiver:htmlfile');
|
||||
}
|
||||
|
||||
function HtmlfileReceiver(url) {
|
||||
debug(url);
|
||||
EventEmitter.call(this);
|
||||
var self = this;
|
||||
iframeUtils.polluteGlobalNamespace();
|
||||
|
||||
this.id = 'a' + random.string(6);
|
||||
url = urlUtils.addQuery(url, 'c=' + decodeURIComponent(iframeUtils.WPrefix + '.' + this.id));
|
||||
|
||||
debug('using htmlfile', HtmlfileReceiver.htmlfileEnabled);
|
||||
var constructFunc = HtmlfileReceiver.htmlfileEnabled ?
|
||||
iframeUtils.createHtmlfile : iframeUtils.createIframe;
|
||||
|
||||
global[iframeUtils.WPrefix][this.id] = {
|
||||
start: function() {
|
||||
debug('start');
|
||||
self.iframeObj.loaded();
|
||||
}
|
||||
, message: function(data) {
|
||||
debug('message', data);
|
||||
self.emit('message', data);
|
||||
}
|
||||
, stop: function() {
|
||||
debug('stop');
|
||||
self._cleanup();
|
||||
self._close('network');
|
||||
}
|
||||
};
|
||||
this.iframeObj = constructFunc(url, function() {
|
||||
debug('callback');
|
||||
self._cleanup();
|
||||
self._close('permanent');
|
||||
});
|
||||
}
|
||||
|
||||
inherits(HtmlfileReceiver, EventEmitter);
|
||||
|
||||
HtmlfileReceiver.prototype.abort = function() {
|
||||
debug('abort');
|
||||
this._cleanup();
|
||||
this._close('user');
|
||||
};
|
||||
|
||||
HtmlfileReceiver.prototype._cleanup = function() {
|
||||
debug('_cleanup');
|
||||
if (this.iframeObj) {
|
||||
this.iframeObj.cleanup();
|
||||
this.iframeObj = null;
|
||||
}
|
||||
delete global[iframeUtils.WPrefix][this.id];
|
||||
};
|
||||
|
||||
HtmlfileReceiver.prototype._close = function(reason) {
|
||||
debug('_close', reason);
|
||||
this.emit('close', null, reason);
|
||||
this.removeAllListeners();
|
||||
};
|
||||
|
||||
HtmlfileReceiver.htmlfileEnabled = false;
|
||||
|
||||
// obfuscate to avoid firewalls
|
||||
var axo = ['Active'].concat('Object').join('X');
|
||||
if (axo in global) {
|
||||
try {
|
||||
HtmlfileReceiver.htmlfileEnabled = !!new global[axo]('htmlfile');
|
||||
} catch (x) {
|
||||
// intentionally empty
|
||||
}
|
||||
}
|
||||
|
||||
HtmlfileReceiver.enabled = HtmlfileReceiver.htmlfileEnabled || iframeUtils.iframeEnabled;
|
||||
|
||||
module.exports = HtmlfileReceiver;
|
||||
Reference in New Issue
Block a user