我正在使用flask socketio创建聊天网站。我控制使用会话加入聊天的人(当用户登录时,我将人们的会话设置为usernake),如会话['name']=username
当用户没有聊天时,我将他或她的会话设置为无。但是在这种情况下,当用户通过不点击注销按钮关闭网站时,通过用户注销就会有用户的会话..所以用户的名字就在列表中......
如何通过关闭网站来管理未注销的人?
答案 0 :(得分:0)
您可能想尝试使用Javascript来检测浏览器关闭事件。它不是一个完美的解决方案,但在很多情况下,它会让你有机会检测到用户正在离开,并启动一些代码来结束他们的会话。
您可以查看各种方法,但我看到this question似乎非常有帮助。
答案 1 :(得分:0)
根据此文档http://flask.pocoo.org/docs/0.12/api/ 你有这个参数flask.session
permanent
如果设置为True,则会话生效 permanent_session_lifetime秒。默认值为31天。如果设置为 False(默认值)会话将在用户删除时删除 关闭浏览器。
同样来自flask-socketio,提到了会话行为
会话上下文全局的行为方式与常规行为不同 要求。 SocketIO时的用户会话副本 建立连接可供在中调用的处理程序使用 这种联系的背景。如果SocketIO处理程序修改了 会话,修改后的会话将保留给未来的SocketIO 处理程序,但常规HTTP路由处理程序将不会看到这些更改。 实际上,当一个SocketIO处理程序修改会话时,就是一个“分叉” 会话专门为这些处理程序创建。技术 这种限制的原因是为了保存用户会话cookie 需要发送到客户端,这需要HTTP请求和 响应,在SocketIO连接中不存在。使用时 服务器端会话,例如Flask-Session或 Flask-KVSession扩展,对HTTP路由中的会话所做的更改 只要会话是,SocketIO处理程序就可以看到处理程序 未在SocketIO处理程序中修改。