왜 내 indexOf가 작동하지 않는지 이해하려고합니다! 사실, 사용자가 웹 사이트의 페이지를로드 할 때마다 서버는 하나의 (잠시 동안) 값인 사용자의 이름 인 변수 "data"를 수신합니다.NodeJS Socket.IO : indexOf가 작동하지 않습니다.
client.js :
$.ajax({
type: "POST",
url: "ajax.php",
data: {
ajaxRequest: "userInfos"
},
success: function(data){
var data = JSON.parse(data);
var userInfos = {
name: data.username,
}
socket.emit('pong',JSON.stringify(userInfos));
}
});
server.js :
client.on('pong',function(data){
var data = JSON.parse(data);
if(data.name != null) { // On s'assure qu'il est connecté
/** VARIABLES SESSION **/
client.set("name",data.name);
client.set("id",client.id);
/** VARIABLES SESSION **/
if(connected.indexOf(data.name) == -1){ // Si il n'est pas dans le tableau
var usersInfos = {
name: data.name,
id: client.id
};
io.sockets.emit('pong',JSON.stringify(usersInfos));
connected.push(JSON.stringify(usersInfos)); // On remet son pseudo
console.log("[PONG] "+data.name+" ("+client.id+") est connecté");
}
}
});
사용자가 이미 개체에 존재하지 않고, 실제로 작동하지 않는 경우에 따라서 usersInfos는 만 완료됩니다 ... 그는 페이지를로드하거나 새로 고침 할 때마다 사용자를 푸시합니다.
다음은 연결되어 있고 사용자 정보가 신고 된 방법입니다.
var connected = [];
var usersInfos = {};
제발 도와주세요, 누군가 죽일 것입니다!
죄송합니다 ! 나는 이해하지 못했다 ... 사실 데이터는 "var.Data = JSON.parse (data)"로 분석되므로 "connected.indexOf (data.name)"에서 "connected"는 구문 분석되고 "data"도된다! –
예,'data'는 파싱 된 객체입니다 만,'JSON.stringify (usersInfos)'는 분명히 아닙니다. – Bergi