Deno bindings for ZeroMQ. (UNFINISHED! DO NOT USE IT!!!)
Reply
import * as zmq from "https://deno.land/x/zeromq/mod.ts";
const socket = zmq.Reply();
await socket.bind("tcp://127.0.0.1:5555");
for await (const [req] of socket) {
console.log(`Receive: [${new TextDecoder().decode(req as Uint8Array)}]`);
socket.send("World");
}
Request
import * as zmq from "https://deno.land/x/zeromq/mod.ts";
const socket = zmq.Request();
await socket.connect("tcp://127.0.0.1:5555");
await socket.send("Hello");
const [res] = await socket.receive();
console.log(`Receive: ${new TextDecoder().decode(res as Uint8Array)}`);
Publish
import * as zmq from "https://deno.land/x/zeromq/mod.ts";
const socket = zmq.Publish();
await socket.bind("tcp://127.0.0.1:5555");
while (true) {
await socket.send("kitty cats", `meow!`);
await new Promise((resolve) => setTimeout(resolve, 500));
}
Subscribe
import * as zmq from "https://deno.land/x/zeromq/mod.ts";
const sock = zmq.Subscribe();
await sock.connect("tcp://127.0.0.1:5555");
await sock.subscribe("kitty cats");
const dec = new TextDecoder();
for await (const [topic, msg] of sock) {
console.log(
`topic=${dec.decode(topic as Uint8Array)}, msg=${
dec.decode(msg as Uint8Array)
}`,
);
}
- Basic ZMTP Framing
- ZMTP-NULL
- ZMTP-PLAIN
- ZMTP-CURVE
- REQ/REP
- PUB/SUB
- PUSH/PULL
- ...