Last active
November 24, 2016 21:43
-
-
Save facugon/2a1258308c5757e9a53497dd7d8dd652 to your computer and use it in GitHub Desktop.
simple socket wrapper. trigger an event on every new received socket message.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @author Facugon | |
* Simple socket connector. | |
* how to use | |
* | |
* // connect sockets and start listening to events | |
* SocketsConnector({ | |
* io: window.io, | |
* channel:'/socket/subscribe', | |
* query: { | |
* param: 'a custom param', | |
* }, | |
* onSubscribed:function(data,jwres){ | |
* log('subscribed to event updates'); | |
* }, | |
* events: { | |
* 'event-name': function eventHandler(data) { | |
* }, | |
* 'another-event': function ... (data) { | |
* } | |
* } | |
* }); | |
* | |
*/ | |
// var Backbone = require('backbone'); | |
// var _ = require('underscore'); | |
// var debug = require('debug'); | |
function SocketsConnector (options) { | |
if ( ! this instanceof SocketsConnector ) { | |
return new SocketsConnector(options); | |
} | |
_.extend(this, Backbone.Events); | |
var self = this; | |
var io = options.io; | |
var log = debug('eye::sockets'); | |
for (var event in options.events) { | |
io.socket.on(event,function(message){ | |
options.events[event](message); | |
}); | |
} | |
function subscribe (socket) { | |
var emit = socket.emit; | |
socket.emit = function() { | |
log('socket emit', Array.prototype.slice.call(arguments)); | |
emit.apply(socket, arguments); | |
}; | |
var $emit = socket.$emit; | |
socket.$emit = function() { | |
log('socket event',Array.prototype.slice.call(arguments)); | |
$emit.apply(socket, arguments); | |
self.trigger(arguments[0],arguments[1]); | |
}; | |
socket.post( | |
options.channel, | |
options.query, | |
options.onSubscribed | |
); | |
} | |
if (io.socket.socket && io.socket.socket.connected) { | |
log('socket already connected, subscribing...'); | |
subscribe(io.socket); | |
} else { | |
io.socket.on("connect",function(){ | |
log('socket connected! subcribing...'); | |
subscribe(io.socket); | |
}); | |
} | |
return this; | |
} | |
//module.exports = SocketsConnector; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment