| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 'use strict';var EventEmitter = require('events').EventEmitter  , inherits = require('inherits')  , utils = require('./utils/event')  , IframeTransport = require('./transport/iframe')  , InfoReceiverIframe = require('./info-iframe-receiver')  ;var debug = function() {};if (process.env.NODE_ENV !== 'production') {  debug = require('debug')('sockjs-client:info-iframe');}function InfoIframe(baseUrl, url) {  var self = this;  EventEmitter.call(this);  var go = function() {    var ifr = self.ifr = new IframeTransport(InfoReceiverIframe.transportName, url, baseUrl);    ifr.once('message', function(msg) {      if (msg) {        var d;        try {          d = JSON.parse(msg);        } catch (e) {          debug('bad json', msg);          self.emit('finish');          self.close();          return;        }        var info = d[0], rtt = d[1];        self.emit('finish', info, rtt);      }      self.close();    });    ifr.once('close', function() {      self.emit('finish');      self.close();    });  };  // TODO this seems the same as the 'needBody' from transports  if (!global.document.body) {    utils.attachEvent('load', go);  } else {    go();  }}inherits(InfoIframe, EventEmitter);InfoIframe.enabled = function() {  return IframeTransport.enabled();};InfoIframe.prototype.close = function() {  if (this.ifr) {    this.ifr.close();  }  this.removeAllListeners();  this.ifr = null;};module.exports = InfoIframe;
 |