2015-03-17 9 views
7

Sto studiando Node.js al College, ed è la prima volta che imparo questo tipo di linguaggio di programmazione. Ho alcuni errori nel mio tentativo di server di chat. Quando provo a connettere un client con un server, la connessione si chiude immediatamente e appare l'errore 'Invalid non-string/buffer chunk'. Carica alcuni screenshot e puoi controllare cosa non va, perché ci ho pensato per un po 'e non trovo alcuna soluzione.non-string/buffer chunk non valido Node.js

Click here to see my Git bash

Il mio codice in Javascript:

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

    ![enter image description here][2]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<=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<=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); 

risposta

5

Penso che il problema è la linea socket.push(socket). Probabilmente vuoi dire sockets.push(socket). Quello che stai facendo ora è il tentativo di spingere l'istanza socket nel flusso di socket che fallisce perché, come dice l'errore, non è una stringa o un buffer.

+0

grazie, quello era l'errore. –

+0

Ciao @PabloMateos se questa o qualsiasi risposta ha risolto la tua domanda ti preghiamo di prendere [accettandolo] (http://meta.stackexchange.com/q/5234/179419) facendo clic sul segno di spunta. Ciò indica alla comunità più ampia che hai trovato una soluzione e dà una certa reputazione sia al rispondente che a te stesso. Non c'è l'obbligo di farlo. –