【问题标题】:NodeJS net.Socket: `connect` vs `ready` eventNodeJS net.Socket:`connect`与`ready`事件
【发布时间】:2021-06-26 11:43:13
【问题描述】:

今天我很难调试我的 NodeJS 代码的问题。

当我打开到同一个 unix 套接字的两个连接时我遇到了问题(尽管有原因);并且由于未知原因,有时它始终可以正常工作;有时我没有回复任何data,但connect 仅因其中一个而被解雇。

我仍在尝试调试,但我深入研究了文档并遇到了另一个问题。正如 NodeJS Docs (12.x LTS) 所说:(关于 net.Socket

# Event: 'connect'
Added in: v0.1.90
Emitted when a socket connection is successfully established. See net.createConnection().

# Event: 'ready'
Added in: v9.11.0
Emitted when a socket is ready to be used. Triggered immediately after 'connect'.

(https://nodejs.org/docs/latest-v12.x/api/net.html)

我想知道这是不是我应该寻找错误的地方:

  • immediately 是什么意思?这是否意味着synchronously?如果是这样,readyconnect 之间有什么区别吗?
  • 使用ready 而不是connect 来执行after-connection-established/opened 任务有什么意义吗?
  • 两者有什么区别?

谢谢!

【问题讨论】:

    标签: node.js sockets ipc unix-socket


    【解决方案1】:

    此事件从net 发出,以确保不同 API 之间的一致性。在此处查看原始提交: https://github.com/nodejs/node/commit/1c8149417a5dec9b2af056f306822b8a22a09706

    它的创建是为了让开发人员在使用 fsnet 代码时更轻松,这样他们就不必记住给定流实现的所有复杂细节。

    在实践中,Node.js 的套接字代码确实是 this:

    self.emit('connect');
    self.emit('ready');
    

    【讨论】:

    • 谢谢!非常适合寻找提交。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    相关资源
    最近更新 更多