Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS Socket.IO:indexOf不工作_Javascript_Node.js_Indexof_Socket.io - Fatal编程技术网

Javascript NodeJS Socket.IO:indexOf不工作

Javascript NodeJS Socket.IO:indexOf不工作,javascript,node.js,indexof,socket.io,Javascript,Node.js,Indexof,Socket.io,我正在努力理解为什么我的索引不起作用!实际上,每次用户加载网站页面时,服务器都会收到变量“data”,该变量包含一个值(就目前而言):用户名 client.js: $.ajax({ type: "POST", url: "ajax.php", data: { ajaxRequest: "userInfos" }, success: function(data){ var data = JSON.parse(data);

我正在努力理解为什么我的索引不起作用!实际上,每次用户加载网站页面时,服务器都会收到变量“data”,该变量包含一个值(就目前而言):用户名

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才会完成。。。每次页面加载或刷新后,他都会推送用户

以下是如何声明connected和usersInfos:

var connected = [];
var usersInfos = {};
请帮帮我,我会杀人的


如果在连接的
数组上推送JSON字符串,则无法在其中找到唯一的
.name
。希望已经保存了一个活的:-)

我通过编写多维对象函数解决了我的问题

以下是函数:

/** 
 * Création d'un tableau d'objets multidimensionnel
 */
function mdimAdd(arrayName,values) {
    // On vérifie si l'array est déjà un objet ou non.
    if(typeof(arrayName) == "object") {
        arrayName = JSON.stringify(arrayName); // Si oui, on la transforme en string
    } 

    arrayName = arrayName.slice(0,-1); // On supprime le dernier caractère
    if(S(arrayName).endsWith("}")) {
        arrayName = arrayName+",";
    }

    arrayName = arrayName+""+values; // On rajoute les valeures 
    arrayName = arrayName+"}"; // On ferme l'objet

    return JSON.parse(arrayName); // On retourne le tableau sous forme d'objet JSON
}
下面是创建多维对象的行:

usersInfos = mdimAdd(usersInfos,'"'+data.name+'": {"name": "'+data.name+'","id": "'+client.id+'"}');
那么现在我要做的是:

client.on('pong',function(data){
        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(!usersInfos[data.name]){ // Si il n'est pas dans le tableau
                usersInfos = mdimAdd(usersInfos,'"'+data.name+'": {"name": "'+data.name+'","id": "'+client.id+'"}');
                console.log("[PONG] "+data.name+" ("+client.id+") est connecté");
            }
        }
    });

抱歉耽搁了!我不明白。。。实际上,数据是“var data=JSON.parse(data)”解析的,所以在“connected.indexOf(data.name)”中,“connected”和“data”也是解析的!是的,
data
是一个已解析的对象,但是
JSON.stringify(usersInfos)
显然不是。
client.on('pong',function(data){
        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(!usersInfos[data.name]){ // Si il n'est pas dans le tableau
                usersInfos = mdimAdd(usersInfos,'"'+data.name+'": {"name": "'+data.name+'","id": "'+client.id+'"}');
                console.log("[PONG] "+data.name+" ("+client.id+") est connecté");
            }
        }
    });