NodeJS数据吞吐量

时间:2015-04-29 12:51:23

标签: node.js http

我已经设置了一个可以被客户端访问的NodeJS服务器。每隔一段时间,就必须让服务器连接到第二台服务器,并将检索到的信息反馈给客户端。

连接到第二台服务器很容易,但说实话我不知道如何将它发送回客户端。在与第二台服务器连接时似乎禁止res.write

来自客户端的连接由handleGetRequest处理。与第二台服务器的连接从http.get开始。

var http = require('http');
var url  = require('url');

var server = http.createServer(function(req, res) {
  var url_parsed = url.parse(req.url, true);

  if (req.method ==='GET') {
    handleGetRequest(res, url_parsed);
  } else {
    res.end('Method not supported');
  }
});


handleGetRequest = function(res, url_parsed) {
  if (url_parsed.path == '/secondary') {
    var OPTIONS = {
      hostname: "localhost",
      port: "8900",
      path: "/from_primary"
    }

    http.get(OPTIONS, function(secget) {
      resget.on('data', function(chunk) {

      // either store 'chunk' for later use or send directly

      });
    }).on('error', function(e) {
      console.log("Error " + e.message);
    });

  } else {
    res.writeHead(404);
  }
  res.end('Closed');
};
server.listen(8000);

如何将chunkhttp.request发送到客户端?

2 个答案:

答案 0 :(得分:1)

我认为将callback传递给handleGetRequest会解决此问题:

if (req.method === 'GET') {
  handleGetRequest(url_parsed, function (err, response) {
    if (err) {
      return res.sendStatus(500);
    }

    res.json(response);
  });
} else {
  res.end('Method not supported');
}

handleGetRequest = function (url_parsed, callback) {
  // OPTIONS ...

  http.get(OPTIONS, function(resget) {
    var data = '';

    resget.on('data', function(chunk) {
      data += chunk;
    });

    resget.on('end', function() {
      callback(null, data);
    });
  }).on('error', function(e) {
    callback(e);
  });
}

答案 1 :(得分:0)

感谢@TalgatMedetbekov的建议。我设法像这样实现它:

LOOKUP

它有效。字符串前面有一个“未定义”,我找不到原因,但基本功能非常完美。

回调构造是同步NodeJS的异步性质所必需的。