当我用节点创建一个http服务器时,我想知道请求对象可以某种方式指向响应对象。现在,我正在使一个全局变量等于响应并访问它,但我想直接从请求中访问响应。
var http = require('http');
var server = http.createServer(server_handler).listen(port);
var response_stream_object = {};
function server_handler(request, response) {
response_stream_object = response;
request.func(param);
}
http["IncomingMessage"].prototype.func = function(param) {
// Doing something with response_stream_object
}
答案 0 :(得分:1)
不要使用全局变量。它与您的服务器的所有请求共享。因此,如果在您完成当前请求的处理之前有另一个请求,则可能会覆盖它。如果您没有异步处理(没有数据库,没有磁盘访问,没有网络访问),那么这只是正常的。
由于这是javascript,当然您可以随时向对象(任何对象)添加内容。例如,您甚至可以向内置Math
对象添加内容:
// only an example, don't do this:
Math.monkey = "ooh, ooh, aah, aah";
所以你可以这样做:
request.response = response;
现在,关联的响应对象直接与请求对象绑定。
但是如果你需要这么做的话,请考虑你的架构。如果你真的需要这样做,那么你可能做错了。