Python开发模拟版Web QQ实验
本实验环境基于django1.8+python3.4+mysql开发+bootstrap+jquery开发
设计思路:
如果1要给2发消息,前端通过Ajax把消息发到后台(webserver)。
Webserver通过to_id确定把消息转给2,webserver不能主动把消息发给2,Webserver是被动的。Webserver只能先把消息存起来,等待2去请求时,webserver再把消息给它。
设计流程图:
Webserver存1发送的消息和2取消息处理思路:
利用消息队列,用python自带的queue先把消息存起来,2上线去取。2去queue中取消息queue变成空时就阻塞,等待新消息。
1给2发消息,webserver把消息放到2的队列里面。
1有1000个朋友,不用先建1000个queue。有谁和1聊天再来检测是否有队列存在,不存在再来建立queue。一般情况下活跃的好友为10%。data_type:来判断是单人还是群主。
减少对服务器端请求频次的处理:
客户端只能去服务器端请求消息,一上线就去取。时时探测去服务器请求消息。时时请求太频繁,对服务器端压力太大。客户端请求时,webserver看有没有属于新消息。客户端请求,把连接挂起,挂起6秒,有新消息就返回,没有就等待6秒断开,在重新连接,降低请求连接次数。请求没消息挂起6秒,有消息返回。
以上为主要设计思路。