Socket
Book a DemoInstallSign in
Socket

eureka

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eureka

MSG and RPC tool based on ZMQ and Redis

0.0.26
latest
npmnpm
Version published
Weekly downloads
4
33.33%
Maintainers
1
Weekly downloads
 
Created
Source

#Eureka

RPC and boardcast networks based on ZMQ

##RPC

###Creating server

var srv = Server.create({
  
  name: "s2",
  
  endpoint: {
    pub: "tcp://*:6061",
    router: "tcp://*:6611"
  }
  
});

###Registering methods

Server.register() accepts a simple object that has a "_symbols_" map describing the methods avaiable. Method requests are checked against this map in case of illegal purpose.

srv.register({
  ns: "bar",
  foo: function(id) {},
  col: function(name) {},
  kar: function(file) {},
  
  __symbols__: {
    "bar.foo": {
      params: [{
        name: "id",
        type: "number"
      }],
      type: "method"
    },
    
    "bar.col": {
      params: [{
        name: "name",
        type: "string"
      }],
      type: "method"
    },
    
    "bar.kar": {
      params: [{
        name: "file",
        type: "string"
      }],
      type: "method"
    }
  }
});

You could specify a json file to clean up the mess:

srv.register(require("./foo"));

In foo.js

var Foo = {

  ns: "foo",
  
  bar: function(drip) {
    setTimeout(function() {
      console.log("%@ from %@".fmt(drip.req.params.greetings, drip.id));
      drip.out("nice");
      drip.end();
    }, 200);
  },
  
  __symbols__: require("./foo.json")
  
};

module.exports = Foo;

And we put method descriptions in foo.json.

###Method invocation

var client = Client.create({

  name: "c1",
  
  endpoint: {
    sub: "tcp://127.0.0.1:60601",
    dealer: "tcp://127.0.0.1:60611"
  }
  
});

####Client.request(api, params, cb)

Client#request method is the main entry point of method invocation, where cb is passed with single argument:

  • resp: a response stream object, which have "error", "data", "end " events

####Client.get(api, params, cb) This shortcut method is used to retrieve simple response from remote method. Cb is passed with two arugments:

  • error: an error object if any
  • data: stringified content of response stream

###Relfection There's a special API that can tell clients about the detailed info about avaliable methods on remote server.

client.get("core.reflection", "all", function(err, list) {
	//list contains all methods avaliable on server
});

###Event boardcast

####Server.boardcast(type, msg)

Boardcasting message to all clients is quite straight forward.

####Client.subscribe(type, cb)

where cb is passed with message from server, and it's called when events of type is published by server.

##Heartbeat

Heartbeat ping-pong requests are secretly handled by RPC.Server and RPC.Client. First heartbeat ping is sent after client's connection request. Server pong response will be replied immediately.

NextPingInterval = LastPingInterval * Math.E, LastPingInterval defaults to 5 seconds

FAQs

Package last updated on 31 Jul 2012

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.