gpt4 book ai didi

javascript - node.js 在回调问题中表达 res.send

转载 作者:行者123 更新时间:2023-12-02 13:49:35 24 4
gpt4 key购买 nike

我有一个 node.js 脚本,它做了两件事:

  1. 启动一个 http 服务器来监听来自浏览器的 POST 请求。
  2. 启动套接字连接到 java 服务器

当来自浏览器的请求时,我将使用套接字将一些数据发送到java服务器,然后将数据从java服务器以http响应形式返回到浏览器。

它对于第一个请求工作正常,但在第二个请求中我会收到错误:

Error: Can't set headers after they are sent.

这是 Node.js 脚本:

var client = new net.Socket();
var clientConnected = false;

app.options('*', cors());

app.use(function(req, res, next) {
var data = new Buffer('');
req.on('data', function(chunk) {
// read buffer data from the browser in the POST request
data = Buffer.concat([data, chunk]);
});
req.on('end', function() {
req.rawBody = data;
next();
});
});

app.post('/xxxxxx', function(req, res) {
res.header("Access-Control-Allow-Origin", "*");

if (!clientConnected) {
// if the socket is not connected, create it
client.connect(G_PORT, G_ADDRESS, function() {
clientConnected = true;
});

client.on('close', function() {
clientConnected = false;
});

client.on('data',function(data) {
// get result from the java server through socket
res.send(data);
});

client.on('error', function(error){
clientConnected = false;
});
res.send();
}
else {
// the socket is created, just send the data to socket
client.write(req.rawBody);
}
});

错误指向行:

res.send(data);

client.on('data',function(data)

我是一个刚刚表达的新人,希望有人能给我一些建议,谢谢:)

更新:

每次完成一个请求时,我都尝试关闭套接字,在这种情况下一切正常:

if (true) {
var client = new net.Socket();
client.connect(G_PORT, G_ADDRESS, function() {
client.write(data);
});
client.on('close', function(){
});

client.on('data',function(data){
res.send(decodeData);
client.destroy();
});

client.on('error', function(error){
});
}

这个问题似乎与我的全局套接字实例有关???

最佳答案

错误“错误:发送后无法设置 header 。”当你在已经调用了 res.send 的情况下调用 res.send 时,就会来。

在您的帖子请求中,您有 2 个 res.send

    client.on('data',function(data) {
// get result from the java server through socket
res.send(data);
});

client.on('error', function(error){
clientConnected = false;
});
res.send();

当客户端处于“数据”状态时,您也在 res.send 中发送,这会产生错误。每个请求只需要一个 res.send

关于javascript - node.js 在回调问题中表达 res.send,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41097948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com