根据个人id,在数据库查询消息条数,如果有0条,则什么都不显示,如果大于0条则显示,你有{0}条未读信息
这个查表实现思路我知道 我现在问的是怎么让消息实时提醒
@DeweyLiu: http://www.cnblogs.com/best/archive/2016/09/12/5695570.html
之前做过一个是通过socket通信实现的。 a 给服务器发消息, 服务器收到消息后返回一个值给a
有源码吗 可否参考一下
@DeweyLiu: 不是java写的
用一个专门的表记录消息信息, 信息包括: uid,消息状态 等,
展示个人消息的时候,关联uid查询就可以了,
我问的不是数据库的逻辑实现 是前台与服务器实时交互的问题
@DeweyLiu:
如果只是为了私信消息提醒,我觉得定时请求获取信息就够了,很多网站都是怎么做的,就看博客园,你查看xhr,会发现有很多的 “https://q.cnblogs.com/common/GetUnReadMsgCount”请求,就是请求未读消息条数;
如果你的需求是对实时性要求非常高,类似于webqq这种网页聊天的,你可以参看:https://segmentfault.com/q/1010000002425027,
其中提出了多种解决方案,
@苍枫露雨: 那这种定时请求 用的是什么技术?
@DeweyLiu:
ajax, 通过js的 setinterval 函数定时调用
这个提醒功能可以利用websocket 配合EventSource来使用,目前H5中支持利用websocket和服务端进行实时通信,java代码不是很熟悉,但是基本思路都是一样的,请参考这篇文章http://javascript.ruanyifeng.com/htmlapi/eventsource.html
当出现了websocket之后,类似于长轮询和持久链接都已经不再推荐使用了。websocket作用是什么,就是在服务器与客户端之间建立一个链接,当服务器端产生消息时,主动的通过链接发送给前端,链接一直存在,直到socket链接关闭,这样就不需要之前的,前端去请求,服务端没有信息,再请求,又没有,浪费资源。而是有消息的时候推过来。那么前端使用socket可以去看一下api,按照要求创建一个socket链接,需要注意的只有一点,那就是在何时关闭链接,而不要让连接一直存在就可以了。望采纳。
每个socket连接到服务器后,进行用户和连接之间的Map;
比如现在来消息了,发给B,服务端通过查找到用户B Map 的 连接,连接写入消息。
看你需求了,如果是像discuz、oschina之类,都是在页面刷新的时候才获取一次。
如果需要事实/准实时提醒,那么可以用一个websocket
其实ajax轮询经过优化,资源消耗不会像你想的那么多。