node.js请求指向响应

时间:2015-10-27 03:23:09

标签: javascript node.js

当我用节点创建一个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
}

1 个答案:

答案 0 :(得分:1)

不要使用全局变量。它与您的服务器的所有请求共享。因此,如果在您完成当前请求的处理之前有另一个请求,则可能会覆盖它。如果您没有异步处理(没有数据库,没有磁盘访问,没有网络访问),那么这只是正常的。

由于这是javascript,当然您可以随时向对象(任何对象)添加内容。例如,您甚至可以向内置Math对象添加内容:

// only an example, don't do this:
Math.monkey = "ooh, ooh, aah, aah";

所以你可以这样做:

request.response = response;

现在,关联的响应对象直接与请求对象绑定。

但是如果你需要这么做的话,请考虑你的架构。如果你真的需要这样做,那么你可能做错了。