JavaScript-请问实时提醒消息是怎么做的?
突然看到消息提示和DZ的帖子提示有点类似,因为本人这方面比较弱,所以就弱弱的问问各位高手
大致是怎么做的,还有DZ是怎么做的,有什么不同或者优势...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
突然看到消息提示和DZ的帖子提示有点类似,因为本人这方面比较弱,所以就弱弱的问问各位高手
大致是怎么做的,还有DZ是怎么做的,有什么不同或者优势...
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(7)
观察控制台网络请求,其实就是一个ajax轮询!
反向Ajax(Reverse Ajax)技术。
且不说微博是如何实现的,前端的实现没什么可说的,无非就 Ajax 定时发请求向服务端请求,难度在于后端,当用户多了,通知服务器要承受巨大的访问压力。而如果采用MySQL速度是可想而知的。个人认为这种请求量大的,可以采用NoSQL或者Memcache来存储用户通知。当用户发了一个问答和某些用户有关,那么可以找到与此问答相关的人。并把这些通知存入MySQL的通知表,然后再更新NoSQL里的用户通知数据,当前端通过Ajax来访问的时候只需要访问NoSQL中的信息就可以了,这样不仅速度快,而且不会给数据库服务器带来太大的压力。这只是个人的想法,具体有待商讨。
说下思路,每个用户有一个新消息数计数器,前端按一定频率到后端检查这个计数器。如果消息数发生改变则前台显示改变,当用户查看详细信息时,从后端拉出具体信息。
先说一下数据库,一是有个消息表,这个表里大概有uid(活动对象的id)、msg(消息内容)、type(消息类型,比如提问题、答问题、关注等)、questionid(问题id)、应该还有个flag(标志是否已阅读)
大概流程是这样的:
当用户发起一个提问或者一个答案的时候,系统会向消息表里插一条记录,当用户刷新页面的时候系统会根据这个用户关注的问题、或者回答过得问题id进行筛选这个消息表,把最新的消息(未阅读的)列出来。
前段根据后台筛选的结果来控制这个“新通知”弹窗口。
当然了目前的都没有做到实时的显示,用户必须刷新才能提示,要做到实时提示,那要ajax不停的请求服务器,这个服务器可承受不了的,尤其是用户量上来后,服务器有崩溃的危险。
我说一下我的思路是,前台页面定时执行一个javascript函数,执行ajax功能,从后台程序获取用户的信息,然后再显示在前台。
万变不离其中。 ajax setTimeout,ajax 轮询,长轮询。
如果对chrome之类的浏览器,还可以用h5 websocket