@altabsrl/nativescript-socket.io
Version:
Full-featured Socket.IO client implementation for NativeScript
190 lines • 7.3 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var socketio_common_1 = require("./socketio.common");
exports.enableDebug = socketio_common_1.enableDebug;
exports.disableDebug = socketio_common_1.disableDebug;
var helpers_1 = require("./helpers");
var _Emitter = io.socket.emitter.Emitter;
var _IO = io.socket.client.IO;
var _Socket = io.socket.client.Socket;
var _Ack = io.socket.client.Ack;
var SOCKET_CLASS = 'io.socket.client.Socket';
var SocketIO = (function (_super) {
__extends(SocketIO, _super);
function SocketIO(uri, options) {
if (options === void 0) { options = {}; }
var _this = _super.call(this) || this;
var _options = new _IO.Options();
if (options.query) {
if (typeof options.query === 'string') {
_options.query = options.query;
}
else {
_options.query = Object.keys(options.query).map(function (key) {
return encodeURIComponent(key) + '=' + encodeURIComponent(options.query[key]);
}).join('&');
}
}
if (options.forceWebsockets) {
_options.transports = Array.create(java.lang.String, 1);
_options.transports[0] = 'websocket';
}
if (options.android) {
Object.keys(options.android).forEach(function (prop) {
_options[prop] = options.android[prop];
});
}
_this.android = _IO.socket(uri, _options);
return _this;
}
Object.defineProperty(SocketIO.prototype, "connected", {
get: function () {
return this.android && this.android.connected();
},
enumerable: true,
configurable: true
});
SocketIO.prototype.connect = function () {
this.android.connect();
};
SocketIO.prototype.disconnect = function () {
this.android.disconnect();
};
SocketIO.prototype.on = function (event, callback) {
var listener = function (args) {
var payload = Array.prototype.slice.call(args);
var ack = payload.pop();
if (typeof ack === 'undefined') {
ack = null;
}
else if (typeof ack === 'object' && ack && !(ack.getClass().getName().indexOf(SOCKET_CLASS) === 0 && ack.call)) {
payload.push(ack);
ack = null;
}
payload = payload.map(helpers_1.deserialize);
socketio_common_1.debug('on', event, payload, ack ? 'ack' : '');
if (ack) {
var _ack = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
socketio_common_1.debug('on', event, 'ack', args);
args = args.map(helpers_1.serialize);
ack.call(args);
};
payload.push(_ack);
}
callback.apply(null, payload);
};
var nativeListener = new _Emitter.Listener({
call: listener,
});
this._listeners.set(callback, nativeListener);
this.android.on(event, nativeListener);
return this;
};
SocketIO.prototype.once = function (event, callback) {
var listener = function (args) {
var payload = Array.prototype.slice.call(args);
var ack = payload.pop();
if (typeof ack === 'undefined') {
ack = null;
}
else if (typeof ack === 'object' && ack && !(ack.getClass().getName().indexOf(SOCKET_CLASS) === 0 && ack.call)) {
payload.push(ack);
ack = null;
}
payload = payload.map(helpers_1.deserialize);
socketio_common_1.debug('once', event, payload, ack ? 'ack' : '');
if (ack) {
var _ack = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
socketio_common_1.debug('once', event, 'ack', args);
args = args.map(helpers_1.serialize);
ack.call(args);
};
payload.push(_ack);
}
callback.apply(null, payload);
};
var nativeListener = new _Emitter.Listener({
call: listener,
});
this._listeners.set(callback, nativeListener);
this.android.once(event, nativeListener);
return this;
};
SocketIO.prototype.off = function (event, callback) {
socketio_common_1.debug('off', event, callback);
if (callback) {
var listener = this._listeners.get(callback);
if (listener) {
this.android.off(event, listener);
this._listeners.delete(callback);
}
}
else {
this.android.off(event);
}
return this;
};
SocketIO.prototype.emit = function (event) {
var payload = [];
for (var _i = 1; _i < arguments.length; _i++) {
payload[_i - 1] = arguments[_i];
}
var ack = payload.pop();
if (typeof ack === 'undefined') {
ack = null;
}
else if (typeof ack !== 'function') {
payload.push(ack);
ack = null;
}
socketio_common_1.debug('emit', event, payload, ack ? 'ack' : '');
payload = payload.map(helpers_1.serialize);
if (ack) {
var _ack = function (args) {
args = Array.prototype.slice.call(args).map(helpers_1.deserialize);
socketio_common_1.debug('emit', event, 'ack', args);
ack.apply(null, args);
};
var _nativeAck = new _Ack({
call: _ack,
});
payload.push(_nativeAck);
}
this.android.emit(event, payload);
return this;
};
SocketIO.prototype.removeAllListeners = function () {
this.android.off();
return this;
};
return SocketIO;
}(socketio_common_1.Common));
exports.SocketIO = SocketIO;
function connect(uri, options) {
var socketio = new SocketIO(uri, options || {});
socketio.connect();
return socketio;
}
exports.connect = connect;
//# sourceMappingURL=socketio.android.js.map