Crash du serveur de noeuds (socket Web)

J’essaie de créer un serveur node.js.
L’erreur suivante peut apparaître lorsqu’un utilisateur se déconnecte ou actualise sa page:

entrer la description de l'image ici
C’est le code de mon serveur:

var http = require("http"); var ws = require("C:/Program Files/nodejs/node_modules/npm/node_modules/nodejs-websocket/"); var colors = require('C:/Program Files/nodejs/node_modules/npm/node_modules/colors'); var fs = require("fs"); var request = "C:/Program Files/nodejs/node_modules/npm/node_modules/request"; http.createServer(function (req, res) { fs.createReadStream("index.php").pipe(res) }).listen(8080) // ################################################################################################################################### // ######################################################## CLASSE UTILISATEUR ####################################################### // ################################################################################################################################### var utilisateur = function(){ } // ################################################################################################################################### // ########################################################## CLASSE SERVER ########################################################## // ################################################################################################################################### var tableauUtilisateur = new Array(); var server = ws.createServer(function (connection){ connection.sortinggramme = null connection.on("text", function (str){ if (connection.sortinggramme === null){ newUtilisateur = new utilisateur(); connection.utilisateur = newUtilisateur; connection.sortinggramme = str; tableauUtilisateur.push(newUtilisateur); } else{ var code = str.subssortingng(4,6); var rest = str.subssortingng(6,str.length); switch(code){ case "01": // L'UTILISATEUR DEMANDE A SE CONNECTER var postData={data:rest}; require(request).post({ uri:"http://localhost/php/seConnecter.php", headers:{'content-type': 'application/x-www-form-urlencoded'}, body:require('queryssortingng').ssortingngify(postData) },function(err,res,body){ if(body != "non"){ var infos = body.split("-1-2-3-4-5-6-7-8-9-"); connection.utilisateur.id = infos[1]; connection.utilisateur.sortinggramme = infos[2]; connection.utilisateur.nom = infos[3]; connection.utilisateur.prenom = infos[4]; connection.utilisateur.admin = infos[6]; connection.sortinggramme = infos[2]; console.log(("> "+infos[2]+" S\'EST CONNECTE AU SERVEUR AVEC SES IDENTIFIANTS.").grey); connection.sendText("type01"+infos[0]+",,,,,"+infos[2]+",,,,,"+infos[3]+",,,,,"+infos[4]+",,,,,"+infos[5]+",,,,,"+infos[6]); broadcastExcept("type07"+infos[2]+"("+infos[3]+" "+infos[4]+")",connection.utilisateur.id); } else connection.sendText("type01non"); }); break; case "02": // L'UTILISATEUR DEMANDE A CHANGER D'ANIMATION rest += ",,,,,"+connection.utilisateur.id; var postData={data:rest}; require(request).post({ uri:"http://localhost/php/modifierAnimation.php", headers:{'content-type': 'application/x-www-form-urlencoded'}, body:require('queryssortingng').ssortingngify(postData) },function(err,res,body){}); break; case "03": // L'UTILISATEUR DEMANDE A SUPPRIMER UN COMPTE if(connection.utilisateur.admin == 1){ var postData={data:rest}; require(request).post({ uri:"http://localhost/php/supprimerCompte.php", headers:{'content-type': 'application/x-www-form-urlencoded'}, body:require('queryssortingng').ssortingngify(postData) },function(err,res,body){ connection.sendText("type03"+body); if(body == "oui") console.log(("> "+connection.sortinggramme+" A SUPPRIME UN COMPTE DONT L'ID EST : "+rest).grey); }); } else connection.sendText("type03non"); break; case "04": // L'UTILISATEUR DEMANDE A CREER UN COMPTE if(connection.utilisateur.admin == 1){ var postData={data:rest}; require(request).post({ uri:"http://localhost/php/creerCompte.php", headers:{'content-type': 'application/x-www-form-urlencoded'}, body:require('queryssortingng').ssortingngify(postData) },function(err,res,body){ connection.sendText("type04"+body); if(body == "oui"){ console.log(("> "+connection.sortinggramme+" A CREE UN COMPTE DONT LE TRIGRAMME EST : "+rest.split(",,,,,")[0]).grey); connection.sendText("type04"+body); } }); } else connection.sendText("type04non"); break; case "05": // L'UTILISATEUR DEMANDE A CHANGER LE TYPE D'UN COMPTE if(connection.utilisateur.admin == 1){ var postData={data:rest}; require(request).post({ uri:"http://localhost/php/changerTypeCompte.php", headers:{'content-type': 'application/x-www-form-urlencoded'}, body:require('queryssortingng').ssortingngify(postData) },function(err,res,body){ connection.sendText("type05"+body); var valeur = rest.split(",,,,,")[1]; for(var cpt=0;cpt "+connection.sortinggramme+" A DONNE LES DROITS ADMINISTRTEURS A "+rest.split(",,,,,")[2]).grey); else console.log(("> "+connection.sortinggramme+" A RETIRE LES DROITS ADMINISTRTEURS A "+rest.split(",,,,,")[2]).grey); } }); } else connection.sendText("type03non"); break; case "06": // L'UTILISATEUR DEMANDE A SE CONNECTER AVEC SES COOKIES var postData={data:rest}; require(request).post({ uri:"http://localhost/php/seConnecterCookies.php", headers:{'content-type': 'application/x-www-form-urlencoded'}, body:require('queryssortingng').ssortingngify(postData) },function(err,res,body){ if(body != "non"){ var infos = body.split("-1-2-3-4-5-6-7-8-9-"); connection.utilisateur.id = infos[1]; connection.utilisateur.sortinggramme = infos[2]; connection.utilisateur.nom = infos[3]; connection.utilisateur.prenom = infos[4]; connection.utilisateur.admin = infos[6]; connection.sortinggramme = infos[2]; console.log(("> "+infos[2]+" S\'EST CONNECTE AU SERVEUR AVEC SON ").grey+("COOKIE.").yellow); connection.sendText("type01"+infos[0]+",,,,,"+infos[2]+",,,,,"+infos[3]+",,,,,"+infos[4]+",,,,,"+infos[5]+",,,,,"+infos[6]); broadcastExcept("type07"+infos[2]+"("+infos[3]+" "+infos[4]+")",connection.utilisateur.id); } else connection.sendText("type01non"); }); break; case "08": // L'UTILISATEUR DEMANDE A MODIFIER SON MOT DE PASSE rest += ",,,,,"+connection.utilisateur.id; var postData={data:rest}; require(request).post({ uri:"http://localhost/php/modifierMotDePasse.php", headers:{'content-type': 'application/x-www-form-urlencoded'}, body:require('queryssortingng').ssortingngify(postData) },function(err,res,body){ if(body != "non"){ connection.sendText("type08"+body); } else connection.sendText("type08non"); }); break; } } }) connection.on("close", function (){ for(var cpt=0;cpt "+connection.sortinggramme+" A QUITTE LE SERVEUR.").grey); tableauUtilisateur.splice(cpt, 1); } } }) }) server.listen(8081) function broadcast(str){ server.connections.forEach(function (connection){ connection.sendText(str) }) } function broadcastExcept(str,except){ server.connections.forEach(function (connection){ if(connection.utilisateur.id != except) connection.sendText(str) }) } 

Le switch est là pour distinguer le type du message (se connecter, parler, etc …)
J’ai regardé ce lien , mais je ne comprends pas ou peut-être ce n’est pas la même erreur: /

PS: je ne pense pas que l’eror soit en connection.on("close", function (){ parce que j’ai essayé de le supprimer et c’était pareil.