2015-03-17 10 views
7

Studiuję Node.js w College i to moja pierwsza nauka tego rodzaju języka programowania. Mam kilka błędów w mojej próbie serwera czatu. Kiedy próbuję połączyć jednego klienta z serwerem, połączenie jest zamykane natychmiast i pojawia się błąd "Nieprawidłowy fragment nie-ciąg/bufor". Przesyłam kilka zrzutów ekranu i możesz sprawdzić, co jest nie tak, ponieważ myślałem o tym od jakiegoś czasu i nie znalazłem żadnego rozwiązania.Nieprawidłowy fragment nieobsługujący ciągów/buforów Node.js

Click here to see my Git bash

Mój kod w 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); 

Odpowiedz

5

Myślę, że problemem jest linia socket.push(socket). Prawdopodobnie masz na myśli sockets.push(socket). To, co teraz robisz, to próba przepchnięcia instancji gniazda do strumienia gniazda, który się nie powiedzie, ponieważ, jak wskazuje błąd, nie jest to ciąg ani bufor.

+0

dziękuję, to był błąd. –

+0

Witam @PabloMateos, jeśli ta lub jakakolwiek odpowiedź rozwiązała twoje pytanie, rozważ [akceptuj to] (http://meta.stackexchange.com/q/5234/179419), klikając znacznik wyboru. Wskazuje to szerszej społeczności, że znalazłeś rozwiązanie i dajesz reputację zarówno autorowi, jak i sobie. Nie ma obowiązku tego robić. –

Powiązane problemy