【发布时间】:2015-07-10 06:04:44
【问题描述】:
实际上我必须在与socket.io的简单节点聊天中实现读取和未读取状态。
我已经在 node 和 socket.io 的帮助下构建了实时聊天应用程序。
但现在我想要的是当 user1 向另一个 user2 发送消息时。 user1 具有 user2 是否已阅读消息的状态,该消息将发送给其他用户,就像现在的 whatsup 一样。
关于此状态的任何想法。
【问题讨论】:
实际上我必须在与socket.io的简单节点聊天中实现读取和未读取状态。
我已经在 node 和 socket.io 的帮助下构建了实时聊天应用程序。
但现在我想要的是当 user1 向另一个 user2 发送消息时。 user1 具有 user2 是否已阅读消息的状态,该消息将发送给其他用户,就像现在的 whatsup 一样。
关于此状态的任何想法。
【问题讨论】:
我使用 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!";
});
我知道此代码可能不是处理已读/未读状态的最短方法。但是效果很好。
【讨论】: