社区
Java EE
帖子详情
毕业设计 web聊天室 怎样判断用户已离线
tom_66
2011-03-06 02:57:26
基本上想好了用struts2 hibernate做,聊天那一块也已经用jquery ajax实现了,
但是不知道有什么好的方法来处理用户退出的问题
用户登陆后将用户加到application中好不好?
怎样在用户点击退出按钮或者关闭浏览器时在在线用户列表中删除用户信息?
等级太低,只能给100分。
如果有这一块的源码,希望能分享一下。
各位大哥大姐,老鸟,高手,帮帮忙吧……
...全文
819
47
打赏
收藏
毕业设计 web聊天室 怎样判断用户已离线
基本上想好了用struts2 hibernate做,聊天那一块也已经用jquery ajax实现了, 但是不知道有什么好的方法来处理用户退出的问题 用户登陆后将用户加到application中好不好? 怎样在用户点击退出按钮或者关闭浏览器时在在线用户列表中删除用户信息? 等级太低,只能给100分。 如果有这一块的源码,希望能分享一下。 各位大哥大姐,老鸟,高手,帮帮忙吧……
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
47 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
幻蝶成仙
2011-03-08
打赏
举报
回复
先在web.xml中配好监听器
<listener>
<display-name>StartListen</display-name>
<listener-class>com.zykj.StartListen</listener-class>
</listener>
监听器代码如下:
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import com.zykj.dao.UsersOper;
import com.zykj.entity.Users;
public class StartListen implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent arg0) {
}
//用户退出session时。但不会马上执行,tomcat默认为30分钟,你可以更改(/conf/web.xml)
public void sessionDestroyed(HttpSessionEvent arg0) {
try {
Users u = (Users) arg0.getSession().getAttribute("user");
UsersOper uo=new UsersOper();
uo.updateStart(u.getUId(), 3);
uo.deleteTemporaryFriend(u.getUId());
System.out.println(u.getUId()+"下线了");
} catch (Exception e) {
e.printStackTrace();
}
}
}
暗然的白天
2011-03-08
打赏
举报
回复
用户放在一个单例集合里、上线给一个状态添加进去,下线给一下状态并移除。页面定时访问这个集合并展示。消息就放在xml文件里吧,格式比较容易读取。
magong
2011-03-08
打赏
举报
回复
[Quote=引用 28 楼 fclxyz 的回复:]
晚上结贴,在线用户这一块已经解决了,求聊天这一块思路
[/Quote]
聊天嘛,
得每个客户端主动周期性到服务器取新的聊天文本。
强长黑粗硬
2011-03-08
打赏
举报
回复
聊天功能我是客户端定时提交请求,然后查看有没有发给自己的消息。
至于消息的保存,到DB,放在内存,或者写到文件都随便
ma309385560
2011-03-08
打赏
举报
回复
用定时刷新做聊天功能 有点 建议看看推技术
pang040328
2011-03-08
打赏
举报
回复
首先要弄清楚,离线和下线的定义是不一样的,对于在规定时间内无任何操作的行为定义为“离线”,而关闭应用程序的操作被定义为”下线“。对于下线用户的判断,可以在设计数据库时在user表中加上IsOff字段进行判断,对于离线的判断可以加一个时间戳来判断
zhouluok007
2011-03-08
打赏
举报
回复
聊天这块 最好使用AJAX 做到无刷新效果 个人认为用JSON 对象比MAP好用
liguangwen86
2011-03-08
打赏
举报
回复
session 监听器可以看一下
Cike121272604
2011-03-08
打赏
举报
回复
[Quote=引用 28 楼 fclxyz 的回复:]
晚上结贴,在线用户这一块已经解决了,求聊天这一块思路
[/Quote]
聊天思路......麻烦lz说明白点.
Cike121272604
2011-03-08
打赏
举报
回复
[Quote=引用 20 楼 woodlikewater 的回复:]
我觉的应该由客服端 通过ajax定时给服务端发送信息。。 表示他在线。。用struts2 action的一个方法提供页面访问,参数为用户id 和sessionid
用一个map<String,Date> 类型来存储当前在线用户 key存储用户id value存储最新更新时间
当用户访问用struts 对应的在线方法时候。 先判断map里面是否存有对应用户id 不存在则加入。。时间为当前……
[/Quote]
嗯,这个公告就是这么干的,在线聊天好像也这么弄,不知道在这里行不行...
G_beginner
2011-03-08
打赏
举报
回复
[Quote=引用 28 楼 fclxyz 的回复:]
晚上结贴,在线用户这一块已经解决了,求聊天这一块思路
[/Quote]
聊天的思路?
tom_66
2011-03-08
打赏
举报
回复
晚上结贴,在线用户这一块已经解决了,求聊天这一块思路
强长黑粗硬
2011-03-08
打赏
举报
回复
这个就是说的之前问的那个吧。
算法多种多样,LZ选个合适的就好了,不过我觉得定时刷新,服务器负担会不会很重呀?
不过这种基于http的聊天系统,定时刷新倒是免不了的。
另外大家都说用js判断浏览器关闭。
如果该用户是骨灰级,关闭浏览器是用电源开关的怎么办?
或者在偏远山区,总掉电,这个除非他自己来报道,不然谁也不知道吧。
a619225471
2011-03-08
打赏
举报
回复
学习了
tom_66
2011-03-08
打赏
举报
回复
判断用户是否在线那一块早上已经实现了,是根据昨天说用侦听器的那位高手的意识来弄的
帖子结了
veardn
2011-03-08
打赏
举报
回复
如果用户点浏览器“后退”而不关闭浏览器呢
可以让用户每过一段时间向服务器发送一个特定请求表示该用户正在线,如果服务器有1次没接收到某个在线用户的这个请求,则认定该用户离线
shagan
2011-03-08
打赏
举报
回复
1、等待session过期,具体上面有人讲了
2、浏览器动作,比如窗口关闭时,触发一个事件,再调用logout动作。
3、HTTP是无状态,但可以长连接,一旦连接断了,即logout,可网上查commet技术。Gmail用类似技术
焙焙龙
2011-03-08
打赏
举报
回复
HTTP是无状态的,只能通过Session来模拟状态,所以,服务器对客户端的感知是依赖于发起自客户端的请求的。
要想实现聊天的目的,那么客户端必须往服务器发心跳报文,一来报告自己存活,二来轮询服务器上有无自己的消息,如果有的话就通过response带回。
服务器就是一个瞎子,你喊他他才知道是谁,不能指望服务器去判定客户端是否存活,就好想不能让瞎子去判定刚才喊他的人还在不在
bjliuzg
2011-03-08
打赏
举报
回复
<html>
<script language="javascript">
window.onbeforeunload = function()
{
var n = window.event.screenX - window.screenLeft;
var b = n > document.documentElement.scrollWidth-20;
if(b && window.event.clientY < 0 || window.event.altKey)
{
window.event.returnValue = "";
alert('close');
}
}
</script>
上面是判断IE关闭的例子,在这个方法中取得用户信息,利用AJAX和后台通讯,将该用户的登录状态置成未登录,明白了吗,如果不会ajax的话可以再提问。
iamwhee
2011-03-08
打赏
举报
回复
牛X的session
加载更多回复(24)
基于php的网页
聊天室
的设计与实现--大学
毕业设计
论文.doc
基于php的网页
聊天室
的设计与实现--大学
毕业设计
论文.doc
SpringBoot实现了随机匹配聊天、
离线
消息缓存、消息本地化存储、头像上传、小游戏推荐、世界聊天以及好友关系
可以用于
毕业设计
(项目源码+项目说明)目前在window10/11测试环境一切正常,用于演示的图片和部署教程说明都在压缩包里
毕业设计
源代码.rar
使用H5,css,js设计页面前端,使用sql server数据库,fastmock平台处理数据,整个网站分为四层:微博展示模块,社区
用户
交流模块,个人中心管理模块,管理员管理模块。
ASP实例开发源码—ASP+AJAX 无刷
聊天室
源码 v1.0.zip
ASP实例开发源码—ASP+AJAX 无刷
聊天室
源码 v1.0.zip
ASP源码—
聊天室
三层无存储过程分页Demo.zip
ASP源码—
聊天室
三层无存储过程分页Demo.zip
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章