2015-03-17 13 views
7

Tôi đang học Node.js tại trường Cao đẳng, và đây là lần đầu tiên tôi học loại ngôn ngữ lập trình này. Tôi đã có một số lỗi trong nỗ lực của tôi về máy chủ trò chuyện. Khi tôi cố gắng kết nối một máy khách với máy chủ, kết nối sẽ đóng inmmediately và xuất hiện lỗi 'Chunk không phải chuỗi/bộ đệm không hợp lệ'. Tôi tải lên một số ảnh chụp màn hình và bạn có thể kiểm tra những gì là sai, bởi vì tôi đã suy nghĩ về nó một lúc và tôi không tìm thấy bất kỳ giải pháp.không hợp lệ chuỗi không-chuỗi/đệm Node.js

Click here to see my Git bash

Mã của tôi trong 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); 

Trả lời

5

Tôi nghĩ vấn đề là dòng socket.push(socket). Có lẽ bạn có nghĩa là sockets.push(socket). Những gì bạn đang làm bây giờ, đang cố gắng đẩy thể hiện socket vào dòng socket mà không thành công bởi vì, như lỗi nói, nó không phải là một chuỗi hoặc bộ đệm.

+0

cảm ơn, đó là lỗi. –

+0

Xin chào @PabloMateos nếu câu trả lời này hoặc câu trả lời nào đã giải quyết được câu hỏi của bạn, vui lòng xem xét [chấp nhận câu hỏi] (http://meta.stackexchange.com/q/5234/179419) bằng cách nhấp vào dấu kiểm. Điều này cho thấy cộng đồng rộng lớn hơn mà bạn đã tìm thấy một giải pháp và mang lại một số danh tiếng cho cả người trả lời và bản thân bạn. Không có nghĩa vụ phải làm điều này. –

Các vấn đề liên quan