最近随着王思聪的我撒币,我快乐,直播答题非常火。同时知乎的答题小程序头脑王者也非常火爆。大家在微信和微信群里玩的不亦乐乎。

好吧,快乐总是属于你们,我却只能埋头写代码。。。

公司要求赶紧开发一个这样的答题小程序出来,于是参考了几大现在已经有的答题系统,我们开始了,属于我自己的答题小程序开发之路。

先说几个难点,第一个是直播答题,做聊天室的。如何让用户在聊天室里聊天,做直播答题,大家看到,每个人都可以在里面聊天。我们传统的聊天室大部分用的ajax做轮询,考虑到用户数大的话,轮询对服务器压力还是蛮大的,于是我们放弃了使用ajax轮询的方式来做聊天室。采用的是Gateway worker来做的 具体你们可以看他的手册哈。

GatewayWorker2.x 3.x 手册
http://doc2.workerman.net/326102

首先小程序前端使用wx.connectSocket 连接成功socket以后会返回 clientid,我们就是用后端php做clientid绑定,将每场直播答题考试的会场号作为一个群组,

 Gateway::joinGroup($clientid, $group_id);

绑定成功。然后小程序里的用户发送消息,就是用curl  post消息内容到后端php接口上

一样,不多说,我直接上代码了   向一个群组的所有终端客户推送消息,这样只要前端发送消息,后端就直接拿到内容,推送给所有的终端用户。注意,推送的内容记得使用json编码再推送哦。

 Gateway::sendToGroup($groupName=$redisName, $sendDataString);
$ary['groupCount']= Gateway::getClientCountByGroup($groupName);
$ary['groupClientsession']= Gateway::getClientSessionsByGroup($groupName);
$ary['getAllClientCount']= Gateway::getAllClientCount($groupName);

好吧,这些算是把聊天室的做完了。接着就开始做双方PK的了,PK答题,如何找到匹配对手,还记得之前说的clientid吗?  把当前激活的有效的clientid保存起来,然后给他们两两配对,给他们推送答题,也是用到webscoket,推送给他们两个人,然后同时还是答题,答题结束后将他们的题目同时用curl 方式 post到接口上,接口来计算他们的最后成绩,然后返回给他们。又要用到webscoket来做推送了。

好了,就介绍到这里吧,现在答题小程序非常火,赶紧你也开始开发一个你自己的答题小程序吧。

我,秋峰,phper,目前自创业,做项目系统开发,php后端加小程序前端结合  今天就给大家分享到这里,希望对大家有所帮助。欢迎交流  大家相互学习 共同提高 我的 微信号:qiufeng2999

微信答题小程序 微信小程序 答题 demo 头脑王者这样的答题小程序开发 答题的微信小程序开发经验 微信答题比赛小程序的更多相关文章

  1. Taurus.MVC 微服务框架 入门开发教程:项目部署:5、微服务应用程序发布到Docker部署(下)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  2. Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  3. Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  4. Taurus.MVC 微服务框架 入门开发教程:项目部署:4、微服务应用程序发布到Docker部署(上)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  5. Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  6. 头脑王者pk答题小程序开发思路 微信pk答题小程序开发 PK答题游戏你也可以做 微信pk答题游戏

    想必大家最近的朋友圈和微信群里都被头脑王者PK答题刷屏了吧.确实很好玩,尤其是2018年的这波风口,手机答题,大家掏出手机,创建一个好友PK,然后你的好友点击进来就可以和你一起PK答题.比之前的游戏好 ...

  7. 提取微信小程序“头脑王者”业务逻辑

    产品经理今天让我整理微信小程序"头脑王者"的产品逻辑,花了一天时间在XMind写了写,整理后的内容如图,分享给大家希望大家可以多多点评,互相学习,不知道应该写什么,重要的内容都在图 ...

  8. 类似微信聊天小程序-网易云信,IM DEMO小程序版本

    类似微信聊天小程序-网易云信,IM DEMO小程序版本 代码地址: https://github.com/netease-im/NIM_Web_Weapp_Demo 云信IM DEMO 小程序版本 ( ...

  9. 微信小程序初探(二):阅读官方demo源码

    阅读demo有助于理解逻辑,而且demo源码中应该包含了框架开发人员想要表达的意思的精华,先从app.js着手来阅读. 附带贴下说明: https://mp.weixin.qq.com/debug/w ...

随机推荐

  1. js各运算符的执行顺序

    本文原链接:https://www.sojson.com/operation/javascript.html https://www.jianshu.com/p/d569c6ca1060 JavaSc ...

  2. stm32F042 (二) 按键触发中断

    已经实现GPIO口输出高低电平控制LED,这里实现按键触发中断来改变LED闪亮的频率,因为PB3连着LED,所以PB3的输出模式没有改变,随意选一个GPIO口PA7接按键产生中断.因为nucleo开发 ...

  3. setTimeout,clearTimeout的一些好用法

    if(hidden != 1){ $.ui.showMask(); var _aaa = setTimeout(function(){ $.ui.hideMask(); },5000); } //be ...

  4. 01_4_SERVLET声明周期

    01_4_SERVLET声明周期 1. Servlet的生命周期 生命全过程 加载ClassLoader 实例化 new //客户端第一次请求的时候,只new一次 初始化init(ServletCon ...

  5. 01_1_Socket实现

    01_1_Socket实现 1.什么是MIME Multipurpos Internet Mail Extension 指明白传送内容的格式 最早用于邮件附件 2.HTTP协议基础 HTTP(Hype ...

  6. C++系统学习之九:顺序容器

    元素在顺序容器中的顺序与其加入容器时的位置相对应.关联容器中元素的位置由元素相关联的关键字值决定.所有容器类都共享公共的接口,不同容器按不同方式对其进行扩展. 一个容器就是一些特定类型对象的集合.顺序 ...

  7. Java 的Throwable、error、exception的区别

    1. 什么是异常? 异常本质上是程序上的错误,包括程序逻辑错误和系统错误.比如使用空的引用(NullPointerException).数组下标越界(IndexOutOfBoundsException ...

  8. 如何用纯 CSS 创作一台拍立得照相机

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/YjYgey 可交互视频 此视频是可 ...

  9. 18/07/2017 R matrix

    矩阵:二维数组,元素拥有相同模式(数值型,字符型或者逻辑型) mymatrix <- matrix (vector, nrow_num_of_rows, ncol_num_of_columns, ...

  10. apply 与 lambda

    Python中的lambda和apply用法  https://blog.csdn.net/anshuai_aw1/article/details/82347016