zeromq.js - 等待连接。

问题描述 投票:0回答:1

文件 对于 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,以连接。我希望能出现一些错误信息。

node.js sockets tcp zeromq publish-subscribe
1个回答
1
投票

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:errorconnect:retry.

但还是很有警示意义,不是吗?


await 部分

MCVE代码 (原样) 无法重现实时会话,所以最好对MCVE代码进行调整,使其可以运行,我们可以进一步进行这项工作。

© www.soinside.com 2019 - 2024. All rights reserved.