我正在研究节点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到客户端的连续响应。
先谢谢
答案 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;另一个感谢你')