On GitHub, Unitech/pm2-axon has picked up 24 stars, JavaScript.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
var axon = require('axon');
var sock = axon.socket('push');
sock.bind(3000);
console.log('push server started');
setInterval(function(){
sock.send('hello');
}, 150);
Receiver of PushSocket messages:
var axon = require('axon');
var sock = axon.socket('pull');
sock.connect(3000);
sock.on('message', function(msg){
console.log(msg.toString());
});
Both PushSockets and PullSockets may .bind() or .connect(). In the
following configuration the push socket is bound and pull "workers" connect
to it to receive work:
This configuration shows the inverse, where workers connect to a "sink"
to push results:
Pub / Sub
PubSockets send messages to all subscribers without queueing. This is an
important difference when compared to a PushSocket, where the delivery of
messages will be queued during disconnects and sent again upon the next connection.
var axon = require('axon');
var sock = axon.socket('pub');
sock.bind(3000);
console.log('pub server started');
setInterval(function(){
sock.send('hello');
}, 500);
SubSocket simply receives any messages from a PubSocket:
var axon = require('axon');
var sock = axon.socket('sub');
sock.connect(3000);
sock.on('message', function(msg){
console.log(msg.toString());
});
SubSockets may optionally .subscribe() to one or more "topics" (the first multipart value),
using string patterns or regular expressions:
var axon = require('axon');
var sock = axon.socket('sub');
sock.connect(3000);
sock.subscribe('user:login');
sock.subscribe('upload:*:progress');
sock.on('message', function(topic, msg){
});
Req / Rep
ReqSocket is similar to a PushSocket in that it round-robins messages
to connected RepSockets, however it differs in that this communication is
bi-directional, every req.send()must provide a callback which is invoked
when the RepSocket replies.
var axon = require('axon');
var sock = axon.socket('req');
sock.bind(3000);
sock.send(img, function(res){
});
RepSockets receive a reply callback that is used to respond to the request,
you may have several of these nodes.
var axon = require('axon');
var sock = axon.socket('rep');
sock.connect(3000);
sock.on('message', function(img, reply){
// resize the image
reply(img);
});
Like other sockets you may provide multiple arguments or an array of arguments,
followed by the callbacks. For example here we provide a task name of "resize"
to facilitate multiple tasks over a single socket:
var axon = require('axon');
var sock = axon.socket('req');
sock.bind(3000);
sock.send('resize', img, function(res){
});
Respond to the "resize" task:
var axon = require('axon');
var sock = axon.socket('rep');
sock.connect(3000);
sock.on('message', function(task, img, reply){
switch (task) {
case 'resize':
// resize the image
reply(img);
break;
}
});
PubEmitter / SubEmitter
PubEmitter and SubEmitter are higher-level Pub / Sub sockets, using the "json" codec to behave much like node's EventEmitter. When a SubEmitter's .on() method is invoked, the event name is .subscribe()d for you. Each wildcard (*) or regexp capture group is passed to the callback along with regular message arguments.
app.js:
var axon = require('axon');
var sock = axon.socket('pub-emitter');
sock.connect(3000);
setInterval(function(){
sock.emit('login', { name: 'tobi' });
}, 500);
logger.js:
var axon = require('axon');
var sock = axon.socket('sub-emitter');
sock.bind(3000);
sock.on('user:login', function(user){
console.log('%s signed in', user.name);
});
sock.on('user:*', function(action, user){
console.log('%s %s', user.name, action);
});
sock.on('*', function(event){
console.log(arguments);
});
Socket Options
Every socket has associated options that can be configured via get/set.
identity - the "name" of the socket that uniqued identifies it.
retry timeout - connection retry timeout in milliseconds [100] (0 = do not reconnect)
retry max timeout - the cap for retry timeout length in milliseconds [5000]
hwm - the high water mark threshold for queues [Infinity]
Binding / Connecting
In addition to passing a portno, binding to INADDR_ANY by default, you
may also specify the hostname via .bind(port, host), another alternative
is to specify the url much like zmq via tcp://<hostname>:<portno>, thus
the following are equivalent:
Axon 2.x uses the extremely simple AMP protocol to send messages on the wire. Codecs are no longer required as they were in Axon 1.x.
Performance
Preliminary benchmarks on my Macbook Pro based on 10 messages
per tick as a realistic production application would likely have
even less than this. "better" numbers may be acheived with batching
and a larger messages/tick count however this is not realistic.
Axon are not meant to combat zeromq nor provide feature parity,
but provide a nice solution when you don't need the insane
nanosecond latency or language interoperability that zeromq provides
as axon do not rely on any third-party compiled libraries.
The most recent commit recorded on Unitech/pm2-axon was 2.6 years ago, based on the GitHub push timestamp. The repository has 10 forks — one of the better signals of community interest.
How many stars does Unitech/pm2-axon have?
Unitech/pm2-axon has 24 GitHub stars — refresh the page for the live number, or check github.com/Unitech/pm2-axon. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is Unitech/pm2-axon open source?
Yes — Unitech/pm2-axon ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/Unitech/pm2-axon.
What is Unitech/pm2-axon?
Unitech/pm2-axon (Unitech/pm2-axon) is a JavaScript project tracked by TopGit. The repository has 24 GitHub stars at the time of our last sync.
What language is Unitech/pm2-axon written in?
Unitech/pm2-axon is written primarily in JavaScript. GitHub's language field is based on the largest share of bytes in the default branch.
What license does Unitech/pm2-axon use?
Unitech/pm2-axon is released under the MIT license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
Where do I read more about Unitech/pm2-axon?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/Unitech/pm2-axon is the definitive source.
Read full README in the tab above.
Still deciding about pm2-axon?
One click hands the question to an AI along with this page — see what it says about pm2-axon.