很多单位都有定期或者不定期的知识测试或者技能考核的要求,用来考量员工的学习效果或者技能掌握程度。
以前大都是在纸面或者电脑上进行,不是太方便。
现在随着智能手机和微信的普及,越来越多的企业开始在微信上开展答题考试。没有时间、场地和设备的要求,非常方便执行。
那么微信在线答题小程序需要怎样开发呢,我们公司自己就已经有开发答题小程序,大家可以在小程序中直接搜索“答题王”即可进入体验。在此和大家分享下在开发过程中遇到的一些问题:
我们加入了实时匹配PK答题的模块,难点就是如何做到实时PK答题。我们用到的是小程序的socket编程,后端我们用到的是gateway worker这个socket通讯。
首先小程序前端使用wx.connectSocket 连接成功socket以后会返回 clientid,我们就是用后端php做clientid绑定,将每次的PK房间号作为一个groupid,存起来,每一个进来的就将他加入到这个组里面去。方便后面做PK答题的答案推送。因为实时PK答题,你自己选好了答案,还要等对方的答案出来,这样你才知道你答对了没有,对方答对了没有。
Gateway::joinGroup($clientid, $group_id);
绑定成功。然后小程序里的用户发送消息,就是用curl post消息内容到后端php接口上 。每次你自己选了答案,就post到接口上,然后服务器上做广播,给这个群组的人都广播下另外那个人选的答案是什么。对方拿到别人的答案和自己的答案以后,提交答案,输出自己答对了没有,以及输出对方答对了没有。
一样,不多说,我直接上代码了 向一个群组的所有终端客户推送消息,这样只要前端发送消息,后端就直接拿到内容,推送给所有的终端用户。注意,推送的内容记得使用json编码再推送哦。 把你要推送的答案都存在这个json里就可以了
Gateway::sendToGroup($groupName=$redisName, $sendDataString); $ary['groupCount']= Gateway::getClientCountByGroup($groupName); $ary['groupClientsession']= Gateway::getClientSessionsByGroup($groupName); $ary['getAllClientCount']= Gateway::getAllClientCount($groupName);
好了,今天就先介绍到这里了,如果大家对答题小程序这块想有更为深入的了解,可以加小编微信共同探讨(VX号:lhb-1025),顺便打个小广告,我们开发的答题小程序,已经面向市场销售,如果有需要的也可以加我微信哦