赞
踩
这是我第7次上线答题小程序后更新博文。
小程序主要包含八大版块,在之前的版本上增加了好友对战功能。对小程序感兴趣可在微信小程序搜索 “嗨答答 安全知识挑战赛” 体验,或者邮件我咨询细节,我的邮箱是 371464516@qq.com。
(一)挑战赛(拼速度、拼知识量)
系统自动匹配在线对手,每场比赛共5题,10秒内选出你认为正确的唯一选项。比赛双方按规则获取相应积分。如果系统在5秒内未匹配到在线用户,则随机从已有答题记录中选择一次答题进行模拟对战。
(二)闭关修炼
每场练习共5题(系统从各类题库中随机选择,或者指定某一类题库练习),10秒内选出答案,每道题选择后显示正确答案。如果选择错误,那系统暂停3秒再进入下一题,暂停是为了让学习者记住答案。
(三)好友对战
进入好友对战页,点击右上角分享给好友参与挑战。
(四)错题本
对答题过程中的错误题目进行回顾。
(五)排行榜
可按用户全员排名,按队伍排名。
(六)我的荣誉
展示个人信息,展示答题情况。
(七)道具助力得积分
查看相关视频,学习政策法规。
(八)锦囊赠送
每局答题后获得答题次数,双倍积分或者直接显示答案的功能。
后期产品优化思路:
1、对机器人刷题的情况要提供阻止方案,对恶意参与比赛的情况要有控制方案。
2、用户答题数据做每日备份。
技术实现方案:
框架:JAVA+SPRINGBOOT+WEBSOCKET+MYSQL
本次重点加强的缓存处理,消息机制,提高系统横向扩充能力,增大用户使用量。
1、为解决数据库读瓶颈问题,下一步系统将支持MYSQL读写分离。
2、大量用户访问存在瓶颈,使用集群架构方案,当前架构继续优化。
socket技术升级,支持断线重连,基本思路:
1 全局维护一个SocketTask对象,用来表示websocket连接,小程序onShow时判断是否断线,是否需要重连
2 同时定义一个全局的回调函数callback回调函数,每个页面初始化的时候更新这个回调函数,那么每个页面中收到的返回信息就会执行当前页面逻辑
3 维护一个消息队列,所有的消息请求会首先判断连接是否可用,可用直接send,不可用将消息push到这个队列中。
4 在app.js的onShow函数中判断连接是否连上,如果没有连上就会触发websocket连接
5 SocketTask对象的onOpen()负责从消息队列中取出请求消息,并发送这个请求消息
6 SocketTask对象的onMessage() 负责接收返回消息。并调用每个页面自己定义的回调函数
7 SocketTask对象的onClose() 监听函数中,触发websocket连接
小程序端关键代码:
- let ws = new WebSocket("ws://localhost:8080");
- ws.onopen = function() {
- console.log("client:打开连接");
- ws.send("client:hello,服务端");
- };
- ws.onmessage = function(e) {
- console.log("client:接收到服务端的消息 " + e.data);
- setTimeout(() => {
- ws.close();
- }, 5000);
- };
- ws.onclose = function(params) {
- console.log("client:关闭连接");
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。