我正在使用NodeJS构建客户端和服务器,目前存在一些问题。这是我正在使用的代码。
客户
var options = {
hostname: 'an IP',
port: 8080,
path: '/',
rejectUnauthorized: false,
method: 'GET'
};
var req = https.request(options, function(res) {
res.on('data', function(data) {
process.stdout.write(data);
});
});
req.end();
服务器
var options = {
key: fs.readFileSync('my private key.pem'),
cert: fs.readFileSync('my certificate.pem'),
isServer: true
};
tls.createServer(options, function (s) {
s.write("Hello client!\n");
s.pipe(s);
}).listen(8080, "an IP");
我得到的错误是:
events.js:174
throw er; // Unhandled 'error' event
^
Error: Parse Error
at TLSSocket.socketOnData (_http_client.js:442:20)
at TLSSocket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at TLSSocket.Readable.push (_stream_readable.js:224:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:94:17)
Emitted 'error' event at:
at TLSSocket.socketOnData (_http_client.js:448:9)
at TLSSocket.emit (events.js:198:13)
[... lines matching original stack trace ...]
at TLSWrap.onStreamRead (internal/stream_base_commons.js:94:17)
现在,该错误实际上并没有给我太多尝试和调试代码的机会。我尝试重新启动终端,并确保没有其他进程在端口8080上侦听,但这仍未解决我的问题。我猜这可能与某种TLS握手问题有关,但我不确定。有谁对如何调试有任何想法?有什么立即弹出吗?
编辑:添加错误侦听器后,我得到:
{ Error: Parse Error
at TLSSocket.socketOnData (_http_client.js:442:20)
at TLSSocket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at TLSSocket.Readable.push (_stream_readable.js:224:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:94:17) bytesParsed: 5, code: 'HPE_INVALID_VERSION' }
在输出方面似乎没有太大变化,这很有帮助
您正在获得那些隐秘的错误,因为您在流中缺少error
侦听器。添加它们,您会得到一个更好的错误。
s.on('error', console.error)
req.on('error', console.error)
res.on('error', console.error)
请记住始终向所有流添加错误侦听器:)