npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

redis-messenger

v1.0.10

Published

This library uses Redis' pubsub to provide communication amongst applications

Downloads

70

Readme

redis-messenger

This is a simple library that uses Redis pub/sub to provide intercommunication for node apps. It doesn't setup any sort of master/slave relationship model.

Install

npm install redis-messenger

Api

create([port, host, options])

Create a new redis messenger object. The defaults are

{
  "port":6379,
  "host":"127.0.0.1",
  "options":{}
}
var messenger = require('redis-messenger').create()

register(appName [, callback])

Registering sets your messenger up with a pseudo-unique channel name that it can receive messages on. To retrieve your name, see the whoAmI command.

messenger.register('myAppName');

The callback receives 1 parameter that is the resulting application name that was used for registration. It may not be what you registered as, since that channel may be taken by another application already.

Why not register using the create command? Registering is an asynchronous function which require() cannot do.

send(to, eventName, content)

Send a message to a channel

messenger.send('someApp', 'moshimoshi', { foo: 'bar' });

The send command will wait until your application has successfully registered with a name. This is because the receiver needs an application name to respond to. Once you have registered, the messages will automatically be sent.

Note: It is possible to send to channels that have no listeners. The message will just be thrown away as this is how Redis pub/sub works.

isAlive(id, callback)

Checks if a channel is open or not. The callback receives a single boolean parameter

messenger.isAlive('someChannel', function(aliveness){ ... });

join(channel)

Joins a channel to listen to events

messenger.join('someChannel');

leave(channel)

Leaves a channel that was subscribed to

messenger.leave('someChannel');

unregister()

Leaves the channel that the application was registered to.

messenger.unregister('someChannel');

Warning: This removes the unique channel joining feature.

Handle Messages

The messenger is simply an EventEmitter, so all events are handled accordingly.

For each message, the callback receives the content, sender address, and channel.

messenger.on('someEventName', function(data, sender, channel){
  console.log(sender+"sent a message over channel "+channel+":", data);
});

Example

fooApp.js

var messenger = require('redis-messenger').create();
// register to a specific channel
messenger.register('fooApp');

messenger.on('ping', function(data, sender){
   console.log(sender, ': ping');
   console.log('fooApp : pong');
   messenger.send(sender, 'pong');
});

barApp.js

var messenger = require('redis-messenger').create();
// register to a specific channel
messenger.register('barApp');

messenger.on('pong', function(data, sender){
   console.log(sender, ': pong');
});

setInterval(function(){
   console.log("barApp : ping");
   messenger.send('fooApp', 'ping');
}, 5000);

License

Copyright (c) 2015 Brett Berry

Released under the MIT license.