我在做关于新消息的通知。我想我需要为每个用户开放套接字,并且服务器会在发送新消息时发送通知。我想使用socket.io和redis pub/sub。当用户发送消息时,它会将此事件发布到redis和nodejs服务器,该服务器将成为订户,并将通知客户有关新消息。但是在这种情况下,消息会立即从队列中删除,并且当用户更新他收到的页面时,会通知所有消息都被读取,因为队列为空,但实际上不会读取消息。如何决定这个问题?如何在nodejs中实现通知系统?
2
A
回答
0
如果我理解正确,所有用户使用socket.io打开web套接字,任何新消息都会立即发送给所有用户并标记为未读。问题很简单,如果用户刷新,那么应用程序不知道标记为已读还是未读的消息。
在这种情况下,您的消息可能有一个时间戳,并且您可以记录每个用户实际读取的最后一条消息的时间戳(例如,从客户端发送消息读取事件到服务器),以便当用户刷新页面仍然有信息来重建读取和未读消息的列表。
1
我已经做了这样的事情的多页面的Web应用程序,但现在它的单页,我不需要这个了:
var notifications=[]
...
socket.on('notify', function(message)
{
console.log('new notification received!');
if(notifications[message.notificationId]!==message.notificationId){
//notification never received in the current page
notifications[message.notificationId]=message.notificationId;
//display the notification code here
//In a closure instead of 3 params in order to keep compatibility with IE
setTimeout(function(){Confirm(message.notificationId);}, CONFIRM_INTERVAL);
}
else{
//notification already received
emitConfirm(message.notificationId);
//or setTimeout(function(){Confirm(message.notificationId);}, CONFIRM_INTERVAL);
}
});
相关问题
- 1. 如何在RoR中实现通知系统?
- 2. 实施通知系统
- 3. 实施通知系统
- 4. 实施通知系统
- 5. 如何使用jQuery实现通知系统?
- 6. 如何实现简单的通知系统?
- 7. 如何在java桌面应用程序中实现系统通知
- 8. 通知系统
- 9. 在React上实现反应通知系统
- 10. 从MySQL在C#实现通知系统失败
- 11. 如何在Firefox OS中实现通知?
- 12. 如何在服务中实现通知?
- 13. 我如何获得现在显示的所有系统通知?
- 14. Rails的王菲实时通知系统
- 15. 系统通知在后台
- 16. AngularJS通知系统
- 17. PHP通知系统
- 18. 使用node.js,express,套接字实现通知系统
- 19. 窗口系统如何通知QApplication?
- 20. 实时通知webapp与nodejs
- 21. 我在Rails中创建通知系统
- 22. 单个实例并在系统托盘中通知
- 23. 如何实现日志系统
- 24. Android系统如何实现内部intentservice
- 25. 如何实现公告系统Laravel 5.4
- 26. 如何实现Lisp宏系统?
- 27. 如何实现模块化系统
- 28. 如何实现嵌套评论系统?
- 29. 如何实现结账/篮系统
- 30. 如何在nodejs中实现这个?
emitConfirm发送消息,告诉它是一个读通知....如果它回答你的问题,你能接受吗? – cricardol 2012-08-20 19:01:12