migme-ferry
Version:
Ferry transports packets to and from fusion/fission
127 lines (97 loc) • 3.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FerryEvent = exports.PacketType = exports.Packet = undefined;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
exports.default = Ferry;
var _ferryEvent = require('./events/ferry-event');
var _ferryEvent2 = _interopRequireDefault(_ferryEvent);
var _packetType = require('./packets/packet-type');
var _packetType2 = _interopRequireDefault(_packetType);
var _packet = require('./packets/packet');
var _packet2 = _interopRequireDefault(_packet);
var _transporter = require('./data/transporter');
var _transporter2 = _interopRequireDefault(_transporter);
var _config = require('./config/config');
var _config2 = _interopRequireDefault(_config);
var _dispatcher = require('./events/dispatcher');
var _dispatcher2 = _interopRequireDefault(_dispatcher);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function Ferry() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
access_token = _ref.access_token,
_ref$session_id = _ref.session_id,
session_id = _ref$session_id === undefined ? '' : _ref$session_id,
_ref$socket_path = _ref.socket_path,
socket_path = _ref$socket_path === undefined ? 'ws://stream.mig.me:8000' : _ref$socket_path,
_ref$ajax_path = _ref.ajax_path,
ajax_path = _ref$ajax_path === undefined ? 'http://mig.me/xml' : _ref$ajax_path,
_ref$keep_alive = _ref.keep_alive,
keep_alive = _ref$keep_alive === undefined ? 50 * 1000 : _ref$keep_alive,
_ref$debug = _ref.debug,
debug = _ref$debug === undefined ? false : _ref$debug;
Object.assign(_config2.default, {
access_token: access_token,
session_id: session_id,
socket_path: socket_path,
ajax_path: ajax_path,
keep_alive: keep_alive,
debug: debug
});
var state = {
user: null,
transporter: (0, _transporter2.default)()
};
return {
on: function on(type, fn) {
return _dispatcher2.default.on(type, fn);
},
once: function once(type, fn) {
return _dispatcher2.default.once(type, fn);
},
emit: function emit() {
_dispatcher2.default.emit.apply(_dispatcher2.default, arguments);
},
off: function off(type, fn) {
return _dispatcher2.default.removeListener(type, fn);
},
connect: function connect() {
return new Promise(function (resolve, reject) {
var onReady = function onReady(usr) {
state.user = usr;
state.transporter.keepAlive();
resolve(usr);
};
_dispatcher2.default.once(_ferryEvent2.default.READY, onReady);
state.transporter.connect();
});
},
close: function close() {
if (state.transporter) state.transporter.close();
},
get isReady() {
return state.transporter.isReady;
},
get user() {
return state.user;
},
set user(obj) {
if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object') {
state.user = obj;
}
},
get transporter() {
return state.transporter;
},
send: function send(packet) {
if (!(packet instanceof _packet2.default)) {
throw new Error('packet must be an instance of Packet');
}
state.transporter.sendPacket(packet);
}
};
}
exports.Packet = _packet2.default;
exports.PacketType = _packetType2.default;
exports.FerryEvent = _ferryEvent2.default;