Skip to content

Instantly share code, notes, and snippets.

@cayasso
Created April 28, 2014 17:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cayasso/11379025 to your computer and use it in GitHub Desktop.
Save cayasso/11379025 to your computer and use it in GitHub Desktop.
Custom primus-rooms-adapter
'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'));
'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;
'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