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】:

Qconnect() 方法可能引发什么错误?”


错误部分

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

不过还是很警告,不是吗?


await 部分

MCVE-code ( as-is ) 无法重现实时会话,因此最好调整 MCVE 代码以使其可运行,我们可以继续进行此操作。

【讨论】:

谢谢,我会阅读这个项目。我不知道为什么代码不起作用;它是从这里复制粘贴的 - zeromq.github.io/zeromq.js/index.html#pubsub

以上是关于zeromq.js - 等待连接的主要内容,如果未能解决你的问题,请参考以下文章

Linux下zeromq.js安装

如何解决高并发,连接等待超时的异常

如何为电子版本 4.1.4 重建 zeromq.js 绑定?

如何确定实体框架是不是正在等待来自连接池的连接?

pygame:检测操纵杆断开连接,并等待它重新连接

为啥 Firefox 不等待 WebSocket 连接?