Skip to content

Instantly share code, notes, and snippets.

@kyungw00k
Last active September 19, 2016 21:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kyungw00k/62dfedad946b8cc86be4 to your computer and use it in GitHub Desktop.
Save kyungw00k/62dfedad946b8cc86be4 to your computer and use it in GitHub Desktop.
Firebase Queue Example
{
"name": "my-queue",
"version": "1.0.0",
"description": "My Queue",
"main": "queue_worker.js",
"dependencies": {
"firebase": "2.x",
"firebase-queue": "^1.0.0"
}
}
var Firebase = require('firebase');
// Same ref as in queue_worker.js
var ref = new Firebase('https://<your-firebase>.firebaseio.com/queue');
// This doesn't need to be set every time, but helps us
// define the spec for the task in this example
ref.child('specs').set({
task_1: {
in_progress_state: 'task_1_in_progress',
timeout: 10000
}
});
// Add tasks onto the queue
var taskNumber = 0;
setInterval(function() {
ref.child('tasks').push({
taskNumber: ++taskNumber
});
}, 1000);
var Queue = require('firebase-queue'),
Firebase = require('firebase');
// The location of the Queue - can be any Firebase Location
var ref = new Firebase('https://<your-firebase>.firebaseio.com/queue');
// Creates the Queue
var options = {
specId: 'task_1',
numWorkers: 10
};
var queue = new Queue(ref, options, function(data, progress, resolve, reject) {
// Read and process task data
console.log(data);
// Do some work
var percentageComplete = 0;
var interval = setInterval(function() {
percentageComplete += 20;
if (percentageComplete >= 100) {
clearInterval(interval);
} else {
progress(percentageComplete);
}
}, 1000);
// Finish the task
setTimeout(function() {
resolve();
}, 5000);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment