对Flask-SocketIO里的例子程序sessions.py的解读,关于socket.io.js以及Flask-SocketIO User Session

       sessions.py使用的模板是sessions.html,sessions.html有两种通讯方式一种基于ajax,一种基于socket.io。ajax机制很好理解,通过window.setInterval语句定时发起ajax轮询,成功了就更新相应字符。socket.io机制的原理是当操作员在浏览器里点击connect按钮时,触发click事件关联的函数,此函数先是用io()实例化一个通信对象socket,然后用socket.on来注册"refresh-session"事件handler对象,该handler对象更新相应的字符。以后当通信对象socket有"refresh-session"事件,handler对象就执行更新字符的指令。

       默认情况下,当Socket.io连接建立时,程序自动复制flask session到socket.io session里,以后两个session各自独立,无法访问对方。原因是因为服务器无法通过websocket发送cookie到客户端。

       Flask-SocketIO库从2.9.0开始允许设置session怎么被控制,如果manage_session为true,那么和上一段一样,如果manage_session为false,那么Flask session是被使用的,当然如果Flask session基于cookie,那还是没有实际效果,因为还是服务器无法通过websocket 发送cookie到客户端;但是Flask session如果存储在服务器端,那么还是有用了,存储方式有redis,mongudb,SQLAlchemy,Memcached以及文件存储等等。当第一次通过HTTP访问时,每个session有个id,所以接下来的连接时间,这些存储的session不能被删除,这将导致产生新的id的session,那么客户端和服务器的session id号就不同,无法同步了,比如如果浏览器执行删除cookie操作,那么就无法同步, Flask-SocketIO必须断开重新连接才可以同步,而如果在服务器端删除存储记录,会立刻生成新的记录,不影响同步。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值