socketeer server middleware and client to simplify client action reservations. think: mutex
var socketeer = require('socketeer')
var reservable = require('reservable')
var io = new socketeer.Server()
var reserve = new reservable.Server(io, {
actions: ['item-feed']
})
var feedAction = reserve.action('item-feed')
feedAction.onBeforeReserve = function (callback) {
if (busyProcessingFeed) {
return callback(null, 'BUSY')
}
return callback()
}
feedAction.onData = function (data, callback) {
var sku = processItem(data)
callback(null, sku)
}
feedAction.onRelease = function (cleanRelease) {
startProcessingFeed()
}
io.listen(12345)
var socketeer = require('socketeer')
var reservable = require('reservable')
var io = new socketeer.Client('ws://example.com')
var feed = new reservable.Client(io, 'item-feed')
io.on('open', function () {
feed.reserve().then(function () {
return feed.send('some stuff')
}).then(function () {
return feed.release()
}).catch(function (err) {
console.log('got error: ' + err)
})
})