Created
April 28, 2014 17:46
-
-
Save cayasso/11379025 to your computer and use it in GitHub Desktop.
Custom primus-rooms-adapter
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
'use strict'; | |
/** | |
* Module dependencies. | |
*/ | |
var PilotAdapter('./custom-adapter') | |
, pilotsAdapter = new PilotsAdapter(); | |
// primus-rooms call the set method | |
pilotsAdapter.set(123456, 'INSMOTHER', function set() { | |
console.log('Setting INSMOTHER room'); | |
}); | |
// Set some pilots | |
pilotsAdapter.pilots('INSMOTHER', { name: 'John' }); | |
pilotsAdapter.pilots('INSMOTHER', { name: 'Peter' }); | |
// Get pilots by room | |
console.log(adapter.pilots('INSMOTHER')); |
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
'use strict'; | |
/** | |
* Module dependencies. | |
*/ | |
var Adapter = require('primus-rooms-adapter') | |
, extend = require('extendable'); | |
// Make the adapter extendable. | |
Adapter.extend = extend; | |
/** | |
* Module exports. | |
*/ | |
module.exports = Adapter; | |
// Extend the existing adapter with custom Pilot | |
// adapter. | |
var PilotsAdapter = Adapter.extend({ | |
constructor: function constructor() { | |
this.parent = MyAdapter.__super__; | |
this.parent.constructor(); | |
}, | |
set: function set(id, room, fn) { | |
this.parent.set.call(this, id, room, fn); | |
this.rooms[room]['pilots'] = this.rooms[room]['pilots'] || []; | |
}, | |
// pilots setter and getter | |
pilots: function pilots(room, data) { | |
if (!this.rooms[room]) return []; | |
if (data) this.rooms[room]['pilots'].push(data); | |
return this.rooms[room]['pilots']; | |
} | |
}); | |
// Export custom adapter | |
module.exports = PilotsAdapter; |
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
'use strict'; | |
/** | |
* Module dependencies. | |
*/ | |
var Primus = require('primus') | |
, PilotAdapter('./custom-adapter') | |
, pilotsAdapter = new PilotsAdapter(); | |
// To use this adapter in primus-rooms just do this | |
Primus(server, { rooms: { adapter: pilotsAdapter }}); | |
primus.use('rooms', 'primus-rooms'); | |
// Then you can use the adapter like this | |
primus.on('connection', function onconnection(spark) { | |
spark.on('data', function ondata(data) { | |
data.join(data.room, function () { | |
// set pilots | |
primus.adapter.pilots(data.room, data.pilotsData); | |
// get pilots | |
console.log(primus.adapter.pilots(data.room)); | |
}); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment