该 文件 对于 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
,以连接。我希望能出现一些错误信息。
Q : "什么错误可能是由以下方面引起的?
connect()
方法?"
如果一个人从来没有使用过 ZeroMQ在这里,我们可以先看看 "ZeroMQ 原则 不到 五秒" 刨根问底
ZeroMQ原生API对这些错误进行了区分(从v2.1开始没有改变)。
EINVAL
提供的端点无效.EPROTONOSUPPORT
请求的传输协议不支持.ENOCOMPATPROTO
请求的传输协议与套接字类型不兼容。ETERM
与指定套接字相关联的ØMQ上下文被终止。ENOTSOCK
提供的套接字无效。EMTHREAD
没有IO线程可用来完成任务。
然而你的实际观察者是依赖于 zeromq.js
重新封装这些主状态,所以下一步最好的办法是重新阅读封装器的源代码,以便了解,这些原生API错误状态在 zeromq.js
-包装纸。
备注:
可以生成以下socket事件。根据使用的ZeroMQ版本不同,这个列表可能会有所不同。 注意 错误事件是通过设计来避免的因为它在
Node.js
导致在未处理时抛出异常。 其他的 错误名称 调整为尽可能地接近Node.js中其他网络相关事件的名称,或者接近相应的ZeroMQ.js
方法调用的事件(包括任何错误)用冒号:,例如 与特定操作相对应的事件(包括任何错误)都用冒号:来命名,如bind:error
或connect:retry
.
但还是很有警示意义,不是吗?
await
部分该 MCVE代码 (原样) 无法重现实时会话,所以最好对MCVE代码进行调整,使其可以运行,我们可以进一步进行这项工作。