我是Node的新手。
在这样的设置中
server.on('request', function(request, response) {
// the same kind of magic happens here!
});
我假设
response
是http.ServerResponse
的一个实例。但是我读过的一篇教程说:
http.ServerResponse
是WritableStream
。现在可写流和
http.ServerResponse
都有写方法; here和here。我的问题是,当我调用
response.write
时会调用哪个版本的write
?一种来自http.ServerResponse
或另一种来自可写流? 最佳答案
http.ServerResponse
实现stream.Writable
接口(interface)的版本,但不继承其实际实现。因此,当您调用response.write()
时,您是在调用http.ServerResponse.write()
而不是stream.Writable.write()
。
在内部,http.ServerResponse
实际上是OutgoingMessage
,它是Stream,并且提供 write()
。如果将此与 stream.Writable.write()
实现进行比较,则它们写入数据的方式将有所不同。
如果没有成为Node.js Foundation的一部分,我无法说出动机,但是仅从设计的角度来看,实现stream.Writable
接口(interface)为开发人员提供了熟悉且通用的方法和事件集。另外,http.ServerResponse
正在写入连接套接字(请参阅 OutgoingMessage._send()
),这不是stream.Writable.write()
实现的一部分。
也许以下摘录提供了对基金会思考过程的一些见解