Skip to content

Shox is a flexible extensible pub/sub messageing service that can be defined subscription logic by extensions.

Notifications You must be signed in to change notification settings

PriceBeater/Shox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shox: Yet another lightwight pub/sub messaging service

Shox is a flexible extensible pub/sub messageing service that can be defined subscription logic by extensions.

Configuration

Config.js

config.extension=["basic"];

Loading extensions, see extension/basic.js

config.storage.name="mongo";

Storage module name, see storage/mongo.js

config.storage.env.Host="127.0.0.1";
config.storage.env.Port=27017;
config.storage.env.DBNAME="shox";
config.storage.env.User="";
config.storage.env.Password="";

Storage environment configuration.

config.regport=4010;
config.messageport=4011;

Service port configuration

Extension

Extension includes filter testing methods for subscribers who could receive message when the testing method return true.

For example:

In the basic.js, method: LT(threshold,input) will test the input value less than the threshold and emit message to the subscriber if the method return true.

You can add your Extension and Method, then build your Pub/Sub protocol.

Useage

Subscriber register

Post raw json to service reg endpoint: http://localhost:4011/v1/reg

{
  "key":"234d02ffd1e8d2648763798a75ce37bf", 
  "url":"http://www.amazon.com/dp/B000GUZC2A",
  "subscriber_id":"user0002",
  "testing":"basic.LT", 
  "param":5.5
}

key: Subscription key. Subscribers may receive the message when the publisher publish message with this key. ( Depending on the testing method result.) subscriber_id: subscriber id, combine with the key for identifying a unique subscriber. testing: Testing method name, defined in the server extensions. param: the input param for the testing method, which can be any object. url: Custom field. you can add any fields in the reg object.

Subscriber unregister

Post raw json to service unreg endpoint: http://localhost:4011/v1/unreg

{
  "key":"url_03", 
  "subscriber_id":"user0002"
}

Subscriber receive message

The subscriber client connects to the message api with socket.io, waiting for the MESSAGE message.

var io= require('socket.io-client'), socket= io.connect("http://localhost:4011/v1/message");                                                                                                                   
socket.on('connect', function (data) {
  socket.on('MESSAGE',function(message){
    console.log("received:")
    console.log(message)
  });
});

Publisher sent message

The publisher client connects to the publish api, then emits DATA message. The param should conform to the subscriber definition and the object can be any objects.

var io= require('socket.io-client'), socket= io.connect("http://localhost:4011/v1/publish");  

socket.on('connect', function (data) {                                                                                                                                                             
  socket.emit("DATA",{key:"7a7b40b176737f3930fd7d8a04f39582",param:10.0, object:{}});
});

About

Shox is a flexible extensible pub/sub messageing service that can be defined subscription logic by extensions.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published