最近随着王思聪的我撒币,我快乐,直播答题非常火。同时知乎的答题小程序头脑王者也非常火爆。大家在微信和微信群里玩的不亦乐乎。
好吧,快乐总是属于你们,我却只能埋头写代码。。。
公司要求赶紧开发一个这样的答题小程序出来,于是参考了几大现在已经有的答题系统,我们开始了,属于我自己的答题小程序开发之路。
先说几个难点,第一个是直播答题,做聊天室的。如何让用户在聊天室里聊天,做直播答题,大家看到,每个人都可以在里面聊天。我们传统的聊天室大部分用的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