este-library-oldschool
Version:
Library for github.com/steida/este.git
135 lines (121 loc) • 3.31 kB
JavaScript
// 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');
};