如何从套接字删除旧值?

时间:2019-05-24 12:07:55

标签: node.js mongoose socket.io ejs

我正在使用c9,并实现了消息功能。 user_1登录,进入其收件箱,选择一个联系人姓名,有关该联系人姓名的所有消息都会出现。 现在,user_2登录,进入他的收件箱,如果他输入user_1的任何联系人姓名,则从控制台查看他的联系人姓名BUT,消息出现!!!!! 看起来旧值仍然存储在套接字上。

客户端ejs文件上的

:我从联系人列表中获得了选定的名称,并通过具有回调功能的socket.emit发送。 在服务器端:我从socket.on获得名称 我正在搜索有关该名称的消息,将它们保存在一个数组中,然后通过同一通道将其发送回去。 在客户端:它获取数组并显示与该名称相关的消息。 但是从控制台浏览器,如果用户从另一个用户的列表中输入名称,他也会收到他的消息。

我试图通过不同的渠道发送和接收数据,但是我得到了同样的东西。

Q1:如何删除旧值并防止用户收到其他人的消息? 问题2:还有另一种方法可以从ejs文件发送数据并从套接字以外的服务器获取数据?

在客户端:

socket.emit('indata', oneSelectedName, function (data) {        
        for (let i = 0; i < data.length ; i ++ ){

        addMessage(data[i].userToName , data[i].body);

        }

    });

在服务器端:

io.on("connection", function(socket) {

    socket.on('indata', function (recipientName, fn) {

        MessageModel.find({'$or': [{'userFromName': senderName}, 
                        {'userToName':  senderName    }]}, function (err , allMessages){ 
                            let selectedNameMesagesArray=[];

                            allMessages.forEach(function(message){

                                console.log("selectedNameMesagesArray 00000 "  , message);

                                if (message.userToName === recipientName || message.userFromName === recipientName){
                                    console.log("selectedNameMesagesArray 11111 ");
                                    selectedNameMesagesArray.push(message);
                                }

                            });

                            console.log("selectedNameMesagesArray    2222  " , selectedNameMesagesArray ); 
                            fn(selectedNameMesagesArray );
                        }) ;   

    });

});

0 个答案:

没有答案