TypeScript tls.TLSSocket()抱怨缺少“套接字”参数

时间:2019-12-15 11:37:25

标签: typescript sockets ssl

我正在构建一个非常基本的IRC bot,并使用原始套接字连接到IRC服务器。我最初用纯Javascript编写了该机器人,并在TypeScript中对其进行了重做,但是在通过TLS连接时遇到了一个奇怪的问题(在非安全连接上都可以正常工作)。我的机器人的源代码为on Bitbucket,而我遇到的具体问题为here

[...]
this.client = this.tlsEnabled
    // @ts-ignore
    ? new TLSSocket()
    : new Socket();

this.client.connect(this.port, this.host, () => {
    this.sendInitialConnectionMessages();
});
[...]

如果我没有@ts-ignore行,则VS Code和tsc会抱怨new TLSSocket()的通话:

  

预期有1-2个参数,但为0。未提供'socket'的参数。

实际上,类型定义表明它至少需要一个socket自变量。

但是,如果我通过new TLSSocket(new Socket())const socket = new Socket()new TLSSocket(socket)提供了该脚本,该脚本将立即退出,而不会发生this.client.connect()调用。如果如上所述,我告诉tsc忽略缺少对TLSSocket()的参数,则一切正常,并且该漫游器已通过TLS成功连接到服务器!

我认为我在这里做些愚蠢的事情,但是我不确定是什么。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

解决了!经过大量搜索和查找示例之后,我将连接功能从最初问题中的内容重写为:

this.client = this.tlsEnabled
    ? tls.connect({host: this.host, port: this.port}, () => this.sendInitialConnectionMessages())
    : net.connect({host: this.host, port: this.port}, () => this.sendInitialConnectionMessages());

现在一切都按预期进行。