Nodejs 简单套接字连接不起作用
Nodejs simple socket connection doesn't work
客户端每2秒请求一次数据app.get("/query_data"..
我正在连接到特定的 IP 地址 + 端口。
连接后,我向该地址发送一个字符串以从中接收数据。这很好用,但只有一次。
var socket = new net.Socket();
app.get("/query_data", function (req, res) {
socket.connect(2711, '192.168.1.173', function (err) {
if (err) {
console.log(err);
}
else {
socket.write("d"); // send "d" to trigger socket.on("data")
}
});
socket.on('data', function (data) {
res.send(data);
});
});
我收到的错误消息:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent
to the client
但是,当我将 var socket = new net.Socket();
放在 app.get()
中时,它起作用了。
app.get("/query_data", function (req, res) {
var socket = new net.Socket();
socket.connect(2711, '192.168.1.173', function (err) {
if (err) {
console.log(err);
}
else {
socket.write("d");
}
});
socket.on('data', function (data) {
res.send(data);
});
});
这是为什么?我不想每次客户端从服务器请求数据时都创建一个新套接字。
客户端,它包含在 2 秒内 setTimeout()
函数:
$.get("/query_data", function (data) {
data = data.replace(/[\[\]&]+|nan/g, 'null');
console.log(JSON.parse(data));
(....)
});
您需要确保结束响应过程。
使用 res.end(data)
而不是 res.send(data)
为我完成了工作。
客户端每2秒请求一次数据app.get("/query_data"..
我正在连接到特定的 IP 地址 + 端口。
连接后,我向该地址发送一个字符串以从中接收数据。这很好用,但只有一次。
var socket = new net.Socket();
app.get("/query_data", function (req, res) {
socket.connect(2711, '192.168.1.173', function (err) {
if (err) {
console.log(err);
}
else {
socket.write("d"); // send "d" to trigger socket.on("data")
}
});
socket.on('data', function (data) {
res.send(data);
});
});
我收到的错误消息:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
但是,当我将 var socket = new net.Socket();
放在 app.get()
中时,它起作用了。
app.get("/query_data", function (req, res) {
var socket = new net.Socket();
socket.connect(2711, '192.168.1.173', function (err) {
if (err) {
console.log(err);
}
else {
socket.write("d");
}
});
socket.on('data', function (data) {
res.send(data);
});
});
这是为什么?我不想每次客户端从服务器请求数据时都创建一个新套接字。
客户端,它包含在 2 秒内 setTimeout()
函数:
$.get("/query_data", function (data) {
data = data.replace(/[\[\]&]+|nan/g, 'null');
console.log(JSON.parse(data));
(....)
});
您需要确保结束响应过程。
使用 res.end(data)
而不是 res.send(data)
为我完成了工作。