non valide non-string/tampon de bloc Node.js
Je suis étudiant en Node.js dans le collège, et c'est ma première fois l'apprentissage de ce type de langage de programmation. J'ai quelques erreurs dans ma tentative de construire un serveur de chat. Quand j'essaie de connecter un client pour le serveur, la connexion se ferme immédiatement et je reçois le message d'erreur Invalid non-string/buffer chunk
. J'ai téléchargé un capture d'écran pour vous de vérifier ce qui est mal, parce que j'ai pensé pendant un moment et je ne trouve pas de solution.
Mon code 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");
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);
Capture d'écran de lien est mort. @Pablo veuillez supprimer ou mettre à jour.
OriginalL'auteur Pablo Mateos | 2015-03-17
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème est la ligne
socket.push(socket)
. Probablement vous diresockets.push(socket)
. Ce que vous allez faire maintenant est d'essayer de pousser la prise de l'instance dans le support de flux qui échoue parce que, comme le message d'erreur dit, ce n'est pas une chaîne de caractères ou un tampon.Salut @PabloMateos si cette ou de toute réponse qui a résolu votre question, veuillez vous envisagez de accepter, en cliquant sur la coche. Cela indique à l'ensemble de la communauté que vous avez trouvé une solution et donne une certaine réputation à la fois le répondeur et vous-même. Il n'y a aucune obligation à le faire.
OriginalL'auteur Jasper Woudenberg