我是nodejs
的新手,我有一些客户端 - 服务器实现,它基本上按以下方式工作:我提交一个将数据抛出到客户端远程服务器的表单。后者向我发回一些新数据。
net.createServer(function (socket) {
socket.on('error',function(err){ console.error(err)});
socket.on('data', function (data) {
some_method(data)
});
socket.on('end', function() {
console.log('CONN: disconnected');
//socket.end();
});
app.post('/api/sender', function(req, res) {
socket.write(some_input);
res.end();
});
}).listen(9000);
这很有效,直到客户端断开连接并重新连接,然后我收到以下错误消息:
{ [Error: This socket has been ended by the other party] code: 'EPIPE' }
代码在此行socket.write(some_input)
崩溃。有人可以帮忙吗?
答案 0 :(得分:0)
这是如何解决这个问题的:
module.exports = function(app) {
var clients = {};
var server = net.createServer(function (socket) {
server.getConnections(function(err, count) {
var id = sha1(socket.remoteAddress);
clients[id] = {
stream: through(),
socket: socket,
}
clients[id].stream.pipe(socket);
});
socket.on('error',function(err){ console.error(err)});
socket.on('data', function (data) {
some_method(data)
});
socket.on('end', function() {
console.log('CONN: disconnected');
socket.end();
});
app.post('/api/sender', function(req, res) {
// here id is the IP adress got from req
if (clients[id]) {
clients[id].stream.write(input);
}
res.end();
});
}).listen(9000);
};