论坛首页 Java企业应用论坛

关于消息实时接收的问题

浏览 13274 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-20   最后修改:2010-10-20
  •   系统有这样一个需求,我在服务器端 写入一条消息发送给用户,记录在Oracle表中-
  • ,客户端怎么能实时响应,也就是说,弹出一个像qq的消息框 ,客户端大概有200来人,且同时在线的,如果客户端每次查询数据库看有没有自己的消息,有就弹出来,这是不是对性能有影响呢,能不能用其他的方式写咯 ,很迷惘

 
   发表时间:2010-10-20  
客户端和服务端建立连接,然后有消息的时候主动发送给客户端,客户端收到消息立刻弹出显示

如果不要求非常即时的话也可以客户端不停的请求服务端,看是否有新消息,这种就可以建立在非连接基础上了
0 请登录后投票
   发表时间:2010-10-20  
sandzhang 写道
客户端和服务端建立连接,然后有消息的时候主动发送给客户端,客户端收到消息立刻弹出显示

如果不要求非常即时的话也可以客户端不停的请求服务端,看是否有新消息,这种就可以建立在非连接基础上了


如果采用 线程的话,我客户端有几百号人,并且都是8小时在线的,隔几分钟就 连接一次数据库,看有没有记录,这会不会对性能有影响啊,关键就是我 也只能获取服务器端的 数据


0 请登录后投票
   发表时间:2010-10-20  
在Application中放置一个Map,以及用户标识为键,值为一个消息列表,添加消息时,顺便在列表里面也添加一份,用户每隔一段时间读自己的列表,有东西的话,读一条删除一条。

用户没有上线就不用塞了。

只是个思路而已。
0 请登录后投票
   发表时间:2010-10-20  
这个不需要存入数据库,在Application里存着就行了
然后用ajax轮询或者推模式送到客户端
0 请登录后投票
   发表时间:2010-10-21  
可以在客户端嵌套一个flash 用flash 做长连接 一直监听后,如果后台有数据 就发给flash  通过flash 再告诉js 然后通知给用户
0 请登录后投票
   发表时间:2010-10-21  
你写消息的时候存入数据库或者应用中。对在线的用户发出消息提示。不在线的用户等他登录的时候查询一下是否有即时消息,有就给予提示。。
我建议还是即时查询数据库,写入消息的时候查一次,用户每次登录的时候查一次,这样就分开了,不会耗多大开销的
0 请登录后投票
   发表时间:2010-10-21  
comet
0 请登录后投票
   发表时间:2010-10-21  
不用查数据库,数据库就当做一个消息的log就行了。
客户端和服务器一直保持连接,因为200人,所以没问题。
服务器有消息就通过连接发出去就ok了。
0 请登录后投票
   发表时间:2010-10-21  
心`跳`包
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics