[](https://travis-ci.org/bitrinjani/zmq) [](https://coveralls.io/github/bitrinjani/zmq?b
npm install @bitr/zmq  
npm install @bitr/zmq
`
ZmqRequester
$3
`typescript
export default class ZmqRequester {
constructor(url: string, timeout?: number);
request(message: Request): Promise;
dispose(): void;
}
`
$3
`typescript
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
$3
`typescript
export default class ZmqResponder {
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)
$3
`typescript
// 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
$3
`typescript
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();
``