zeromq.js - 等待连接
Posted
技术标签:
【中文标题】zeromq.js - 等待连接【英文标题】:zeromq.js - Await connection 【发布时间】:2020-08-24 21:13:19 【问题描述】:documentation 的 connect
方法说,
连接到给定远程地址的套接字并立即返回。连接将在后台异步进行。
但是,await
似乎并不适用,如他们的订阅者代码示例所示。
subscriber.js
const zmq = require("zeromq")
async function run()
const sock = new zmq.Subscriber
sock.connect("tcp://127.0.0.1:3000") //Happens async; can we await this?
sock.subscribe("kitty cats")
console.log("Subscriber connected to port 3000")
for await (const [topic, msg] of sock)
console.log("received a message related to:", topic, "containing message:", msg)
run()
另外,connect()
方法可能引发什么错误?我提供了一个“淫秽”端口号,例如8124000
,用于连接。我希望提出一些错误消息。
【问题讨论】:
【参考方案1】:Q:“
connect()
方法可能引发什么错误?”
错误部分
ZeroMQ 原生 API 区分(自 v2.1 以来未更改)这些错误:
EINVAL
提供的端点无效。EPROTONOSUPPORT
请求的传输协议不受支持。ENOCOMPATPROTO
请求的传输协议与套接字类型不兼容。ETERM
与指定套接字关联的 ØMQ 上下文已终止。ENOTSOCK
提供的套接字无效。EMTHREAD
没有可用于完成任务的 I/O 线程。
然而你的实际观察者依赖于 zeromq.js
重新包装这些主要状态,所以最好的下一步是重新阅读包装器源代码,以便了解这些原生 API 错误状态实际上是在 zeromq.js
-wrapper 中处理的。
备注:
可以生成以下套接字事件。根据所使用的 ZeroMQ 版本,此列表可能会有所不同。 请注意,错误事件是通过设计避免的,因为这在
Node.js
中具有特殊行为,如果未处理,则会引发异常。 其他错误名称已调整为尽可能接近 Node.js 中其他网络相关事件名称和/或相应的ZeroMQ.js
方法调用。与特定操作相对应的事件(包括任何错误)以冒号 : 命名,例如bind:error
或connect:retry
。
不过还是很警告,不是吗?
await
部分
MCVE-code ( as-is ) 无法重现实时会话,因此最好调整 MCVE 代码以使其可运行,我们可以继续进行此操作。
【讨论】:
谢谢,我会阅读这个项目。我不知道为什么代码不起作用;它是从这里复制粘贴的 - zeromq.github.io/zeromq.js/index.html#pubsub以上是关于zeromq.js - 等待连接的主要内容,如果未能解决你的问题,请参考以下文章