title: invalid non-string/buffer chunk Node.js
body: <p>I'm studying Node.js in college, and it's my first time learning this kind of programming language. I've got some errors in my attempt to build a chat server. When I try to connect one client to the server, the connection closes immediately and I get the error <code>Invalid non-string/buffer chunk</code>. I uploaded a <a href="https://plus.google.com/111099475939840728802/posts/dWr7qeeTy1d?pid=6127006472892988946&amp;oid=111099475939840728802&amp;authkey=CNaX15vv_dzj0AE" rel="nofollow noreferrer">screenshot</a> for you to check out what is wrong, because I've been thinking about it for a while and I can't find any solution.</p>
  
  <p>My Javascript code:</p>
  
  <pre class="lang-js prettyprint-override"><code>var net = require('net');
  var s = require
  var sockets = [];
  var nombres = [];
  var nombresUsados = [];
  console.log("Se ha iniciado el sevidor");
  
  var server = net.createServer(function(socket) {
      socket.push(socket);
      nombres.push("Cliente:" + sockets.indexOf(socket));
      nombresUsados.push("Cliente:" + socket.indexOf(socket));
  
      console.log("Cliente aceptado, nick:" + nombres[sockets.indexOf(socket)]);
      socket.write("Bienvenido" + nombres[sockets.indexOf(socket)] + "\n");
  
      socket.on('data', function(d) {
          var entrada = d.toString();
          var UsuarioUnico = entrada.match(/^msg/);
          var cambiarNick = entrada.match(/^nick/);
          var quit = entrada.match(/^quit/);
          if (cambiarNick == "nick") {
              var repetido = 0;
              var nombresSinNick = entrada.replace(cambiarNick, '');
              for (var i = nombres.length - 1; i &lt;= 0; i--) {
                  if (nombresSinNick.substring(0, nombres[i].toString().length) == nombres[i].toString()) {
                      socket.write("KO, escoja otro nombre\n")
                      repetido = 1;
                  }
              };
  
              if (repetido == 0) {
                  nombres[sockets.indexOf(socket)] == nombresSinNick.trim();
                  process.on('uncaughtException', function(err) {
                      socket.write("KO\n");
                  });
  
                  socket.write("OK. " + nombres[sockets.indexOf(socket)] + "\n");
                  console.log(nombresUsados[sockets.indexOf(socket)]) + "su nombre ha sido cambiado por:" + nombres[sockets.indexOf(socket)];
                  nombresUsados[sockets.indexOf(socket)] = nombresSinNick.trim();
              }
          } else if (UsuarioUnico = "msg") {
              var nombresSinMsg = entrada.replace(UsuarioUnico, '');
              var encontrado = 0;
              for (var i = nombres.length - 1; i &lt;= 0; i--) {
                  if (nombresSinMsg.substring(0, nombres[i].toString().length) == nombres[i].toString()) {
                      var mensaje = nombresSinMsg.replace(nombres[i], '');
                  }
              };
              socket.on('end', function() { // CALLBACK: desconexión de cliente
                  if (quit == 'quit') {
                      var i = nombres[sockets.indexOf(socket)];
                      sockets.splice(i, 1);
                      console.log("Ha salido el usuario:" + nombres[sockets.indexOf(socket)]);
                  }
              });
          }
      });
  });
  
  server.listen(9000);
  </code></pre>