在用户关闭网页或者关闭浏览器时,如何知道用户退出了网站

电饭锅煲汤 2017-04-25 07:11:06
现在有个需求,需要记录用户登录和退出网站的时间,如果用户是通过关闭网页或者关闭浏览器的方式退出,如何获取用户退出网站的时间?
...全文
2061 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
代码是我快乐 2017-05-04
  • 打赏
  • 举报
回复
我觉得5秒请求一下 如果用户多了会造成服务器压力的
by_封爱 2017-04-26
  • 打赏
  • 举报
回复
当然如果你觉得这对你来说有难度,你可以采用sp1234的说法来实现. 大概就是 5秒请求一下xxx.ashx?uid=当前登陆用户. 在xxx.ashx里执行

update user set lasttime=getdate() where uid=传过来的id
然后你查询用户的时候 lasttime跟当前时间对比一下.,. 如果绝对值>5秒 那么这个用户就不在线..反之...
  • 打赏
  • 举报
回复
嗯,还是说成 js 的函数名字 setInterval 吧。上面本来是想说“定时”。 假设把网页采用长连接方式,那么当然长连接本身就在服务器端有这个机制,表现用户在线状态。所以先假设你是传统的 web 网页编程方式,不是 HTML5 程序员。
  • 打赏
  • 举报
回复
传统的网页,需要使用 ajax 方式维持一个“心跳”访问。例如 settimeout(fn, 30000),而这里的 fn 就是访问一下(例如) heartbeat.ashx,服务端会记录每一个 SessonID 最后心跳时间。 判断一个用户是否在线,就是判断它在哪一个 SessionID 上登录,以及最后心跳时间。如果超时就是这个用户已经“死了”。
电饭锅煲汤 2017-04-26
  • 打赏
  • 举报
回复
引用 2 楼 diaodiaop 的回复:
用户打开网站的瞬间 就open服务器 进行websocket连接就可以了...然后你可以写点断线重连的机制. 服务端那边 通过open或者close事件就可以捕获到用户是否真正的"在线", 这其实是唯一的,高效的最好的办法...
没接触过,有空试试
allen0118 2017-04-26
  • 打赏
  • 举报
回复
引用 2 楼 diaodiaop 的回复:
用户打开网站的瞬间 就open服务器 进行websocket连接就可以了...然后你可以写点断线重连的机制. 服务端那边 通过open或者close事件就可以捕获到用户是否真正的"在线", 这其实是唯一的,高效的最好的办法...
貌似这是一个比较好的办法,如果可以搞一个Demo就好了...
by_封爱 2017-04-26
  • 打赏
  • 举报
回复
什么sessionend的 你叫他去吃
by_封爱 2017-04-26
  • 打赏
  • 举报
回复
用户打开网站的瞬间 就open服务器 进行websocket连接就可以了...然后你可以写点断线重连的机制. 服务端那边 通过open或者close事件就可以捕获到用户是否真正的"在线", 这其实是唯一的,高效的最好的办法...
正怒月神 版主 2017-04-26
  • 打赏
  • 举报
回复
不过diaodiaop的socket,应该也可以。我没试过
正怒月神 版主 2017-04-26
  • 打赏
  • 举报
回复
很多都是 心跳包
CaRrot_Love 2017-04-25
  • 打赏
  • 举报
回复
记得之前客户也有个这样的需求,当时觉得这个事情不太可能。现在我能想到的几个笨办法 1.用户访问页面时,记录当前用户时间,做个定时器轮询通知刷新用户当前在线的时间,比如30秒一次,写一个脚本不停刷新服务器中用户的状态,超出30秒默认退出(这个地方可做很多优化,避免刷新所有用户) 2.用户关闭浏览器时触发事件onbeforeunload弹出个询问提示(不够友好),这时记录一个当前时间,生成一个定时器默认设置为10秒,请求接口记录此数据,如超过10秒定时器请求消除此数据,否则默认当前时间退出 其他的想不到,等大牛来给教程,我也很想知道

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧