node.js - NodeJS net.Socket:`connect`与`ready`事件
问题描述
今天我很难调试我的 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
?ready
如果是这样,和之间有什么区别connect
吗? - 使用
ready
而不是connect
执行after-connection-established/opened
任务有什么意义吗? - 两者有什么区别?
谢谢!
解决方案
net
为了跨不同 API 的一致性而发出此事件。在此处查看原始提交:
https ://github.com/nodejs/node/commit/1c8149417a5dec9b2af056f306822b8a22a09706
它的创建是为了让开发人员在使用fs
和net
编码时的生活更轻松,这样他们就不必记住给定流实现的所有复杂细节。
在实践中,Node.js 套接字代码是这样做的:
self.emit('connect');
self.emit('ready');
推荐阅读
- angular7 - 我想将 Modernizr 添加到 Angular(版本 7)应用程序中,我该怎么做?
- scala - 找不到错误值 spark import spark.implicits._ import spark.sql
- javascript - 使用回调创建用于删除/确认的可重用函数
- azure - C# 如何从 Azure 应用服务 RDP 连接到本地 Windows 服务器?
- c++ - 无法理解break
- vb.net - 使用内部 VB.Net 应用程序时 Word 中出现神秘的黑线
- python - 从 XML 文件创建多个 Python 字典
- swift - 领域写入使 NSColorPanel 滞后
- curl - 使用 curl 和文件的哈希获取特定版本的 github 文件
- marklogic - Marklogic:元素值查询 vs 路径范围查询