0.12.0 • Published 6 years ago

socketmq v0.12.0

Weekly downloads
10
License
MIT
Repository
-
Last release
6 years ago

SocketMQ

Build Status Coverage Status

Lightweight messaging library for node & browser.

Messaging Types

SocketMQ supports req/rep and pub/sub messaging patterns. Messaging pattern is high level concept of how messages should be handled on sending and receiving. It's client/server & transport agnostic which means you can use all 4 types of messaging pattern no matter you are connected to a server or being connected from a client with any of the transports supported.

Request/Response

Each request will be sent to one connected client/server and wait for response (round-robin scheduler).

// example/rep.js
var socketmq = require("../");

var smq = socketmq.bind("tcp://127.0.0.1:6363");

smq.on("bind", function() {
  console.log("rep bound");
});

var event = "hello"; // or you can call it topic or channel.

smq.on("connect", function(stream) {
  console.log("new connection");
  smq.req(event, "request from server", function(msg) {
    console.log(msg);
  });
});

smq.rep(event, function(msg, reply) {
  console.log("requested msg:" + msg);
  reply("Hi " + msg + ", world!");
});
// example/req.js
var socketmq = require("socketmq");

var smq = socketmq.connect("tcp://127.0.0.1:6363");

smq.on("connect", function(stream) {
  console.log("req connected to server");
});

setInterval(function() {
  smq.req("hello", "socketmq.req", function(msg) {
    console.log("replied msg:" + msg);
  });
}, 1000);

smq.rep("hello", function(msg, reply) {
  console.log("request from server", msg);
  reply("response from client");
});

Publish/Subscribe

A pub message will be distributed to all client/server connected and no response will be sent back. It's a fire and forget messaging pattern. Pub messages could be received by subscribing to the publishing topic.

// example/pub.js
var socketmq = require("socketmq");

var smq = socketmq.connect("tcp://0.0.0.0:6363");

smq.on("connect", function() {
  console.log("pub connected");
  setInterval(function() {
    smq.pub("pub.test", "hello");
  }, 1000);
});
// example/sub.js
var socketmq = require("socketmq");

var smq = socketmq.bind("tcp://127.0.0.1:6363");

smq.on("bind", function() {
  console.log("sub bound");
});

smq.sub("pub.test", function(data) {
  console.log("got pub message: " + data);
});

Using tags

SocketMQ can tag the streams and send messages to streams with specific tags.

var socketmq = require("socketmq");

var tcpUri = "tcp://127.0.0.1:6363";
var smq = socketmq.connect(tcpUri, function(stream) {
  // Tag the stream.
  smq.tag(stream, "tcp");
});

var tlsUri = "tls://127.0.0.1:46363";
smq.connect(tlsUri, function(stream) {
  smq.tag(stream, "tls");
});

// Then send messages using `reqTag` of `pubTag`

// `req` message only to server with `tcp` tag
smq.reqTag("tcp", "hello", "message", function() {
  // ...
});

// `pub` message only to server with `tls` tag
smq.pubTag("tls", "hello", "message");
0.12.0

6 years ago

0.11.0

6 years ago

0.10.1

7 years ago

0.10.0

7 years ago

0.9.4

7 years ago

0.9.3

7 years ago

0.9.2

7 years ago

0.9.1

7 years ago

0.9.0

7 years ago

0.8.1

7 years ago

0.8.0

7 years ago

0.7.1

8 years ago

0.7.0

8 years ago

0.6.5

8 years ago

0.6.4

8 years ago

0.6.3

8 years ago

0.6.2

8 years ago

0.6.1

8 years ago

0.6.0

8 years ago

0.5.9

8 years ago

0.5.8

8 years ago

0.5.7

8 years ago

0.5.6

8 years ago

0.5.5

8 years ago

0.5.4

8 years ago

0.5.3

8 years ago

0.5.2

8 years ago

0.5.1

8 years ago

0.5.0

8 years ago

0.4.3

8 years ago

0.4.2

8 years ago

0.4.1

8 years ago

0.4.0

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.0

8 years ago

0.1.7

8 years ago

0.1.6

8 years ago

0.1.5

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago

0.0.1

11 years ago

0.0.0

11 years ago