节点 - 如何将连续的HTTP响应发送回客户端

时间:2015-07-09 12:42:38

标签: javascript node.js http

我正在研究节点js,这对我来说很新鲜。这里我有以下功能,  我从JS调用Http请求并等待来自Http响应的响应。在这里,我正确地得到了响应,但在我的情况下,我正在研究传感器设备。所以,我需要从HTTP获得连续响应。我正在使用

msg.res.send(200, 'Thanks for the request ');

它正在向客户发回'感谢请求'。但是,如果我使用

msg.res.send(200, 'Thanks for the request ');
msg.res.send(200, 'Thanks for the request ');

像这样连续,第一个工作正常,第二个得到错误如下

  

错误:发送后无法设置标头。

请帮我解决这个问题,因为我需要从HTTP到客户端的连续响应。

先谢谢

1 个答案:

答案 0 :(得分:2)

由于Http是无状态协议,因此只要您发回响应,连接就会结束。

实现您所需要的最佳方法是打开与服务器的TCP连接。然后,您可以通过此连接继续发送数据。

var net = require('net');

var client = new net.Socket();
client.connect(1337, '127.0.0.1', function() {
    console.log('Connected');
    client.write('Thanks you');
    client.write('Another thank you');
});

client.on('data', function(data) {
    console.log('Received: ' + data);
    client.destroy(); // kill client after server's response
});

client.on('close', function() {
    console.log('Connection closed');
});

如果http是唯一的选项,您必须等到获得所有必需的数据,然后立即发送。通过res.status(200).send('谢谢你' +#39;另一个感谢你')