返回信息流总结几点:
1.客户端关闭是不会向服务器发送消息的。
2.如果客户端关闭了再打开重连服务器也是创建新的session了,所以不用担心保留用户信息问题。
3.有很多轮询(ajax)或者长连接(Websocket)甚至js也能让页面关闭发出信号。服务器单独针对这些信号编程即可。
一个Web server,需要有一个列表维护有哪些用户正在浏览网页并记录相关信息。但是用户退出后如果不及时更新列表迟早会溢出。
最后我弄了两个办法,有些想不明白,求指教。
第一肯定是建个数据库来存,这样就再也不用担心内存不够用了...但是估计会很慢而且这个方法感觉微2。。不过要做一个用户行为分析什么的倒是挺有用。
第二就是侦测浏览器关闭发出的信号了,然后根据这个信号来更新列表。但是Google了半天也没弄明白,请讲讲呗?我拿python写的,从来没侦测到firefox关闭后向我的服务器socket端发出了什么啊。
来自「北邮人论坛手机版」
这是一条镜像帖。来源:北邮人论坛 / www-technology / #27441同步于 2014/9/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
Web服务器如何侦测客户端(浏览器)关闭?
sxh
2014/9/1镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
用js检测呢?
http://stackoverflow.com/questions/1631959/browser-window-close-event?lq=1
There is no way to know on the server-side (unless you are using some JavaScript to send a message to the server) that the browser has closed. How could there be? Think of how HTTP works - everything is request and response.
师兄你是对的。
那一般来说成熟的框架怎么解决这个问题呢?
【 在 binux 的大作中提到: 】
: http://bbs.byr.cn/#!article/WWWTechnology/26949
来自「北邮人论坛手机版」
嗯。。我觉得可以在生成客户端页面的时候自动加入这个script。是这个意思吧?
【 在 wzcc 的大作中提到: 】
: 我能想到的一种方案是客户端 window.onbeforeunload = function(){}, 在关闭之前再进行一次http请求
来自「北邮人论坛手机版」
有点没弄明白,这个jq事件是指的用户关闭整个浏览器才触发还是光是单个页面(比如刷新)就触发?
【 在 Chon 的大作中提到: 】
: 用js检测呢?
: http://stackoverflow.com/questions/1631959/browser-window-close-event?lq=1
来自「北邮人论坛手机版」
页面
【 在 sxh 的大作中提到: 】
: 有点没弄明白,这个jq事件是指的用户关闭整个浏览器才触发还是光是单个页面(比如刷新)就触发?
: 来自「北邮人论坛手机版」