重新连接时nodejs客户端服务器问题



我是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)崩溃。有人可以帮忙吗?

这是如何解决的:

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);
};

最新更新