UNPKG

este-library-oldschool

Version:

Library for github.com/steida/este.git

135 lines (121 loc) 3.31 kB
// Generated by github.com/steida/coffee2closure 900.1.18 /** @fileoverview este.socketio @namespace este.socketio */ var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.superClass_ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; goog.provide('este.socketio'); goog.provide('este.socketio.EventType'); goog.require('este.Base'); goog.require('este.Model.Event'); goog.require('este.thirdParty.socketIoClient'); goog.require('goog.events.EventTarget'); /** @extends {este.Base} @constructor */ este.socketio = function() { este.socketio.superClass_.constructor.call(this); } extend(este.socketio, superClass); /** @private @type {Object} */ este.socketio.prototype.socket_ = { /** @export */ emit: null }; este.socketio.EventType = { RESPONSE: 'response' }; /** @private @type {Object} */ este.socketio.prototype.listeners_ = {}; /** @param {string} host */ este.socketio.prototype.connect = function(host) { this.socket_ = io(host); }; /** Request to socket Callback function is optional. If callback is not set, then response invoke the event and can be captured. @param {string} name @param {Array|Object|String} message @param {function(S):?=} fnName callback function @template S */ este.socketio.prototype.request = function(name, message, fnName) { var requestString, responseString; requestString = this.getRequestString_(name); responseString = this.getResponseString_(name); this.socket_["emit"](requestString, message); if (!goog.object.containsKey(this.listeners_, name)) { if (goog.isDef(fnName)) { this.socket_.addEventListener(responseString, fnName); } else { this.socket_.addEventListener(responseString, this.response.bind(this, name)); } goog.object.add(this.listeners_, name, true); } }; /** @protected @param {string} data */ este.socketio.prototype.response = function(name, data) { var dataOfEvent, event; event = new este.Model.Event(este.socketio.EventType.RESPONSE, this); dataOfEvent = { name: name, data: data }; event.data = dataOfEvent; this.dispatchEvent(event); }; /** * @public * @param {string} name * @param {function (string, string): ?|undefined} fnName */ este.socketio.prototype.onRoom = function(name, fnName) { return this.socket_["on"](name, function(channel, message) { return fnName(channel, message); }); }; /** @return {Object} */ este.socketio.prototype.getUa = function() {}; /** @return {string} */ este.socketio.prototype.getVersion = function() {}; /** @param {string} name */ este.socketio.prototype.removeListener = function(name) { this.socket_.removeAllListeners(this.getResponseString_(name)); goog.object.remove(this.listeners_, name); }; /** @private @name {string} name @return {string} */ este.socketio.prototype.getRequestString_ = function(name) { return goog.string.buildString(name, 'Request'); }; /** @private @name {string} name @return {string} */ este.socketio.prototype.getResponseString_ = function(name) { return goog.string.buildString(name, 'Response'); };