Skip to content

Instantly share code, notes, and snippets.

@timkuijsten
Created August 27, 2012 21: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 timkuijsten/3492572 to your computer and use it in GitHub Desktop.
Save timkuijsten/3492572 to your computer and use it in GitHub Desktop.
mongo oplog replicate json over tcp
// default to $main, used in mongod master mode
var oplogCollection = '$main';
// if not master, assume a replicaset is used
if (config.db_mode !== 'master') {
oplogCollection = 'rs';
}
var mongoDb = require("mongodb"),
mongoServer = new mongoDb.Server(config.db_host, config.db_port),
dbConnection = new mongoDb.Db(config.db_name, mongoServer);
dbConnection.open(function(err, db) {
if (err !== null) {
util.debug(err);
process.exit(1);
}
var stream = db.collection('oplog.'+oplogCollection).find(null, { 'tailable' : true }).stream();
var server = net.createServer(function(c) {
console.log('new client');
stream.on('data', function(item) {
if (item.op !== 'n') {
c.write(JSON.stringify(item)+'\r\n');
}
});
stream.on('close', function() {
console.log('stream closed, closing connection');
c.destroy();
});
c.on('end', function() {
console.log('disconnected');
});
});
server.listen(config.server_port, config.server_ip, function() {
console.log('server bound');
});
stream.on('error', function(err) {
util.debug(err);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment