node.js - 第一次请求后结束 NodeJS 错误后的 HTTP 写入
问题描述
我有一个从 IOT 设备接收消息的 TCP 服务器。收到消息后,我的 TCP 服务器通过HTTP将其发送到我的 REST 服务器。但是在第一个请求成功发送后,当 TCP 服务器要发送第二个消息时,我得到一个write after end错误。
这是我在 TCP 服务器上的代码:
const net = require("net");
const server = net.createServer(onConnected);
const http = require("http");
const querystring = require('querystring');
//HTTP STUFF
const req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding("utf8");
res.on("data", (chunk) => {
console.log(`BODY: ${chunk}`);
})
res.on("end", () => {
console.log("no more data in res");
})
});
req.on("error", (err) => {
if (err.code === "ETIMEDOUT") {
console.log("problem with request: connection timeout");
} else if (err.code === "ECONNRESET") {
console.log("problem with request: read timeout");
} else {
console.error(`problem with request: ${err.message}`);
}
});
function send(postData) {
console.log("start http");
console.log("post data: " + postData);
req.write(postData, function() {
req.end();
});
};
//TCP
server.listen(PORT, HOST, function() {
console.log("Server listening on &j", server.address());
});
function onConnected(sock) {
var remoteAddress = sock.remoteAddress + ":" * sock.remotePort;
console.log("new client connected: %s", remoteAddress);
sock.on("data", function(data) {
console.log("%s says: %s", remoteAddress, data);
let tcp_message = data.toString("utf8");
let postData = querystring.stringify({
"message": tcp_message
});
console.log("tcp message " + tcp_message)
options.headers = {'Content-Length': Buffer.byteLength(postData) }
send(postData);
let mail_text = "Address: " + remoteAddress + " data: " + tcp_message;
});
sock.on("close", function(){
console.log("connection from %s closed", remoteAddress);
});
server.on("error", function(err){
console.log("connection %s error: %s", remoteAddress, err.message);
});
}
解决方案
推荐阅读
- azure - 如何发送包含 & 符号的 Azure 应用程序配置值?
- swift - CompositionalLayout 项目定制
- javascript - TypeError:无法设置属性“值”为空 | 在文本字段中插入文本
- python - Django - 进行迁移或迁移到数据库时绕过apps.ready函数中的加载代码
- django - Django 信号仅在 debug=True 时有效,DJANGO 3.2.4
- javascript - Next.js:一个 getServerSideProps 中的两个连续 api 调用是否可能?
- python - 如何在现有文件夹上添加更多文件夹?
- python - 如何使烧瓶重定向(“abc”)相对于应用程序运行的url路径返回?
- php - 获取目录中的最新文件,包括子目录 php
- python - 尝试在 Python 中创建文件,但获得权限错误