@bitr/zmq
TypeScript icon, indicating that this package has built-in type declarations

1.1.1 • Public • Published

Build Status Coverage Status npm version

Zeromq.js wrapper for async/await

Install

npm install @bitr/zmq

ZmqRequester

Type definition

export default class ZmqRequester<Request, Response> {
  constructor(url: string, timeout?: number);
  request(message: Request): Promise<Response>;
  dispose(): void;
}

Example

const requester = new ZmqRequester(url); // socket open + connect
const res = await requester.request({ type: 'get' }); // awaitable

// do domething with res...

requester.dispose(); // disconnect + close

ZmqResponder

Type definition

export default class ZmqResponder<Request, Response> {
  constructor(url: string, handler: (request: Request | undefined, respond: (response: Response) => void) => void);
  dispose(): void;
  private parser(message);
  private respond(message);
}

The constructor reveals zeromq's send method through handler's respond parameter. (Revealing constructor pattern)

Example

// bind + set 'message' event handler
const responder = new ZmqResponder(url, (request, respond) => {
  if (request.type === 'get') {
    respond({ success: true, data: { a: 1 } });
  } else {
    respond({ success: false, reason: 'unknown type' });
  }
});

// responds requests...

responder.dispose(); // unbind + close

ZmqPublisher / ZmqSubscriber

Example

  const url = 'tcp://127.0.0.1:9879';
  const topic = 'topic';
  const pub = new ZmqPublisher(url);
  const sub = new ZmqSubscriber(url);
  
  // register callback to handle message
  sub.subscribe(topic, message => {
    console.log(message);
  });  

  pub.publish(topic, 'any message');
  
  ...

  sub.unsubscribe(topic);
  sub.dispose();
  pub.dispose();

Readme

Keywords

Package Sidebar

Install

npm i @bitr/zmq

Weekly Downloads

5

Version

1.1.1

License

MIT

Last publish

Collaborators

  • bitr