【问题标题】:node js real time chat read or not read statusnode js实时聊天已读或未读状态
【发布时间】:2015-07-10 06:04:44
【问题描述】:

实际上我必须在与socket.io的简单节点聊天中实现读取和未读取状态。

我已经在 node 和 socket.io 的帮助下构建了实时聊天应用程序。 但现在我想要的是当 user1 向另一个 user2 发送消息时。 user1 具有 user2 是否已阅读消息的状态,该消息将发送给其他用户,就像现在的 whatsup 一样。

关于此状态的任何想法。

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    我使用 Nodejs 和 Socket.io 获得了一个绘图和发送应用程序,这是我的应用程序的存储库:https://github.com/mg52/DrawChat。应用程序已发送/发送(它的工作方式类似于读取/未读取)状态。在我的应用程序中,每个用户都有一个唯一的 ID。此发送/发送状态取决于这些唯一 ID。

    例如,

    在 index.html 中:

    当你点击发送按钮时,

    message_sent.innerHTML = "Message Send Status: Sending..."
    
    socket.on("get_message", function (data) {
    //getting message from sender (from index.js)
    socket.emit("message_sent",{sentuserid:data.userid});
    
    });
    

    在 index.js 中:

    socket.on("message_sent", function(data){
        io.sockets.emit("message_sent_correctly",{msc:data.sentuserid});
        //it sends back to all users (includes sender) the sender's id 
    });
    

    在 index.html 中:

    socket.on("message_sent_correctly",function(data){
        socket.emit("check_id", {ci: data.msc});
        //sends back to server to control who has sent the message
    });
    

    在 index.js 中:

    socket.on("check_id",function(data){
        if(data.ci === user.uid){
            socket.emit("id_checked");
        }
        //if id equals to sender's id returns to index.html that the message has been sent successfully
    });
    

    在 index.html 中:

    socket.on("id_checked",function(){
         message_sent.innerHTML = "Your message has been read!";
        });
    

    我知道此代码可能不是处理已读/未读状态的最短方法。但是效果很好。

    【讨论】:

    • mg52 感谢您提供有用的脚本!这是发送方将获得消息已成功发送到接收方的状态。我在想如何知道发件人发送的消息已被收件人读取的状态?
    猜你喜欢
    • 2011-11-16
    • 2019-09-13
    • 2018-05-20
    • 2016-10-05
    • 2016-08-04
    • 1970-01-01
    • 2013-04-20
    • 2016-02-25
    • 2023-03-23
    相关资源
    最近更新 更多