zeromq.js
zeromq.js copied to clipboard
Subscriber socket never times out
Describe the bug Connection is pending forever for subscriber sockets.
Reproducing
import * as zmq from "zeromq"
async function run() {
const sub = new zmq.Subscriber;
sub.connectTimeout = 200;
sub.connect("tcp://127.0.0.1:3000"); // there is no publisher running on this port
sub.subscribe();
for await (const [topic, msg] of sub) {
console.log(`Got message`);
}
}
run().catch(err => {
console.error(err)
process.exit(1)
})
Expected behavior Connection should time out / generate an error.
Tested on
- OS: OpenSuSe Tumbleweed
- ZeroMQ.js version: 6.0.0-beta.6
Implementing this missing functionality like this for now, since there doesn't seem to be support for the connection timeout
await new Promise((resolve, reject) => {
let timeout: NodeJS.Timeout | null = null
const listner = () => {
if (timeout) {
clearTimeout(timeout)
}
socket.events.off("connect", listner)
resolve(null)
}
socket.events.on("connect", listner)
timeout = setTimeout(() => {
reject(new Error("connect timeout"))
socket.events.off("connect", listner)
}, 5000)
})