primus-rooms-metroplex-adapter

0.2.2 • Public • Published

primus-rooms-metroplex-adapter

Build Status NPM version Test Coverage

Adapter for primus-room

  • Backed by redis
  • Depends on metroplex & omega-supreme
  • Sets expired keys, so it can gracefully recover if a server goes down
  • Uses scan and sscan to avoid blocking the server for large datasets

Installation

npm install --save primus-rooms-metroplex-adapter
const PrimusRoomsMetroplexAdapter = require('primus-rooms-metroplex-adapter')
 
// initialize primus with required plugins
 
const primus = new Primus(server, {
  transformer: 'engine.io',
  middleware: omegaSupremeRoomsMiddleware(),
  redis
})
 
primus.plugin('omega-supreme', omegaSupreme)
primus.plugin('metroplex', metroplex)
primus.plugin('rooms', primusRooms)
 
// configure & initialize adapter
 
const roomsAdapter = new PrimusRoomsMetroplexAdapter(redis, primus)
primus.adapter = roomsAdapter
primus._rooms.adapter = roomsAdapter // apparently a necessary hack
roomsAdapter.initialize()

Redis Data Schema

Key Type Values
room_manager:rooms:$serverId_$instanceId:$room set $sparkId
  • Used for finding all of the sparks belonging to a room
  • TTL is refreshed periodically, similar to metroplex's expiration refresh algorithm
  • Includes the $serverId so that it can expire if the server goes down
Key Type Values
room_manager:sparks:$sparkId set $roomId
  • Used for finding the rooms a given spark id belongs to
  • TTL is refreshed each time a heartbeat event is received from a spark

Package Sidebar

Install

npm i primus-rooms-metroplex-adapter

Weekly Downloads

9

Version

0.2.2

License

MIT

Unpacked Size

30.5 kB

Total Files

6

Last publish

Collaborators

  • thomasdashney