【发布时间】:2021-06-28 23:05:55
【问题描述】:
当我调用这两个函数时,只有上一个函数失败并返回错误
const { Socket } = require("net")
class Client {
connect () {
this.a = new Socket()
this.a.connect(this.port, this.host)
this.socket = new Socket()
this.socket.connect(this.port, this.host)
}
}
问题是,我知道应该连接的端口没有被使用。这两个函数都应该抛出错误。 如果我先调用较低的,带有 this.a 的仍然失败。
如果我同时使用 this.socket,第一个总是失败,即使我改变了它们的顺序。
为了区分它们,我使用了不同的端口来连接,但也未使用。
this.socket = new Socket()
this.socket.connect(6743, this.host)
this.a = new Socket()
this.a.connect(6744, this.host)
this.port 和 this.host 变量不是问题,因为如果在端口上的服务器在线时运行脚本,它可以工作。
应该抛出的错误信息:
events.js:291
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED 127.0.0.1:6744
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1145:16)
Emitted 'error' event on Socket instance at:
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
errno: -4078,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 6744
}```
【问题讨论】:
-
我不明白。它们都连接到相同的主机和端口。
-
当第一个抛出错误时,第二个永远不会执行。
-
这就是为什么我说,我改变了顺序,首先执行的是带有 this.socket 的那个,然后是带有 socket.a 的那个,现在在下面,仍然失败,而不是第一个。
-
你写的“第一个总是失败”。
-
它不会抛出错误,它会触发
error事件。
标签: javascript node.js nodejs-server