用“websocket第三方服务”野狗云实现双屏互动H5
背景
这次想开发一个双屏互动的案例,考虑到数据实时性及ajax轮询对服务器的压力,尝试用websocket来实现。
自行搭建websocket服务,时间成本和技术成本较高,故寻找第三方服务。经检索,发现goeasy、LeanCloud、野狗云,三家“实时通信引擎”服务商,分析文档考虑价格、便捷性,决定用野狗。
项目分析
“我和女神的故事”H5的玩法逻辑是:
第一步,用户A进入链接显示二维码“页面一”;
第二步,用户B扫描二维码配对成功显示“页面三”,用户A则显示“页面二”;
第三步,用户B点击送花按钮,鲜花由“页面三”飞入“页面二”,实现屌丝给女神送花互动。
开发思路(二维码->配对成功->开始互动):
第一部手机,随机生成roomID(创建房间);
第二部手机,通过roomID(扫描二维码)进行匹配;
第二部手机,点击交互,两部手机分别播放相应动画。
数据库结构:
一级:room
二级: roomID(唯一性)
三级: pairState(配对状态 false/true)
emitState(发射状态 false/true)
数据在野狗里显示为下图:
实现
按照野狗的文档,先初始化实例,分为三步,第一步创建应用,第二步安装SDK(cocos要导为插件,如果是html直接引入javascript即可),第三步创建Sync实例。
用户A代码部分,
写入数据,set() 方法用于向指定节点写入数据,
// 用户A,创建房间var roomID = this.getRandChar(3); // 房间ID,时间戳+随机数ref.child("rooms/" + roomID).set({"pairState": false, // 初始化配对状态"emitState": false // 初始化发射状态 }, function(error) {if (error == null){// 数据同步到野狗云端成功完成// 显示出二维码“页面一”}});
(生成二维码的方法见《html5网页及Cocos中生成二维码》)
监听数据,on() 或 once() 方法用于监听节点的数据,update() 方法用于更新指定子节点,
// 用户A,监测配对状态ref.child("rooms/" + roomID + "/pairState").on('value', function(data) { if(data.val()){// 配对成功,显示“页面二”}}, function(error) {});// 用户A,监测发射状态ref.child("rooms/" + roomID + "/emitState").on('value', function(data) { if(data.val()){// 监测到发射状态为true,播放“收到鲜花”的动效// 恢复发射状态为falseref.child("rooms/" + roomID).update({"emitState": false}, function(error) {if (error == null){// 数据同步到野狗云端成功完成}});}}, function(error) {});
用户B代码部分,
// 用户B,更新配对状态this.roomID = this.getUrlParam("roomID"); // 通过扫描二维码打开带有房间ID参数的链接,获取房间IDthis.ref.child("rooms/" + this.roomID).update({"pairState": true}, function(error) {if (error == null){// 数据同步到野狗云端成功完成// 配对成功,显示“页面三”}});
点击送花按钮,
// 用户B,更新发射状态this.ref.child("rooms/" + this.roomID).update({"emitState": true}, function(error) {if (error == null){// 数据同步到野狗云端成功完成// 播放“送出鲜花”的动效}});
要注意一点,在写代码时一定要把访问数据的路径写对。
在cocos里鲜花用到了对象池和动画,没有什么难点。以上就完成了项目。
Demo二维码
BTW
1、通过这次Demo发现,这是个纯前端的开发,根本没涉及到接口和数据库。这种“无后端开发”对于轻量级的H5开发来说确实便捷,接口数据库这些都不需要自行开发,会节省大量的开发时间。
2、野狗是分服务等级的,对日活跃设备数有限制。正式项目的开发,要考虑流量及成本来决定是否采用此服务。
3、分析几个“双屏互动H5案例”(链接在底部),案例2奔驰采用的websocket、案例3杜蕾斯用的ajax,所以双屏互动开发websocket并不是唯一的选择。后续分享一篇使用阿里云(ECS+RDS)实现交互的博文。
参考链接
野狗说明文档:https://docs.wilddog.com/sync/Web/index.html
goeasy说明文档:http://goeasy.io/resources/www/docs/goeasy-reference-0.1.18-cn.pdf
LeanCloud说明文档 :https://leancloud.cn/docs/js_realtime.html
高大上的双屏互动,你玩过了吗?【双屏互动H5欣赏】:https://www.iguoguo.net/2015/58411.html
WebSocket实现多屏互动的分析及方案:https://blog.csdn.net/u012889638/article/details/50586783
简单理解Socket:http://www.cnblogs.com/dolphinX/p/3460545.html
leancloud和野狗有什么区别,优势在哪?:https://www.zhihu.com/question/37301314
为什么创业公司不再需要后端工程师?:
https://cn.technode.com/post/2015-03-16/do-not-need-backend-engineer/
用“websocket第三方服务”野狗云实现双屏互动H5相关推荐
- 第三方服务-阿里云视频点播服务java服务端SDK相关代码
视频点播服务中的视频,也依然是存在OSS上的,但是区别是什么呢?下面关于区别的描述摘自阿里云官网 视频的点播场景涉及视频的存储.转码.分发加速几个环节,那么: 视频点播是集视频音视频采集.编辑.上传. ...
- Android实战——第三方服务之Bmob后端云的推送服务的集成和使用(三)
第三方服务之Bmob后端云的推送服务的集成和使用(三) 事先说明:这里的一切操作都是在集成了BmobSDK之后实现的,如果对Bmob还不了解的话,请关注我第一篇Bmob文章 步骤一:推送服务的集成 在 ...
- 第三方服务整合-阿里云OSS上传文件-填坑
目录 如下,引入aliyun-oss失败: 原因: 解决方法 OssController 如下,引入aliyun-oss失败: com.alibaba.cloud:aliyun-oss-spring- ...
- SAP云平台上的ABAP编程环境里如何消费第三方服务
在ABAP On-Premises环境下,使用ABAP编程消费第三方服务,相信很多ABAP顾问都已经非常熟悉了,无非就是使用CL_HTTP_CLIENT或者CL_REST_HTTP_CLIENT来发送 ...
- Android实战——第三方服务之Bmob后端云的答题系统小项目(四)
第三方服务之Bmob后端云的答题系统小项目(四) 事先说明:这里的一切操作都是在集成了BmobSDK之后实现的,如果对Bmob还不了解的话,请关注我第一篇Bmob文章 项目意义: 该项目实现简单,比较 ...
- Android实战——第三方服务之Bmob后端云的集成、用户登陆、用户注册、获取用户、用户注销(一)
第三方服务之Bmob后端云的集成.用户登陆.用户注册.获取用户.用户注销(一) Bmob简介: 步骤一:Bmob集成 在www.bmob.cn注册一个用户,在网站后台创建一个应用,进去管理页面之后在设 ...
- Flutter插件一野狗云身份认证
Flutter插件一野狗云身份认证 使用野狗身份认证(Wilddog Auth)的Flutter插件.野狗云身份认证即Auth,用于帮助企业和开发者将野狗快速接入应用的身份认证系统,一次身份认证打通野 ...
- 和后台如何对接_业务系统如何对接第三方服务?
在产品工作中,我们时常要对接第三方服务.本文作者从过往的对接项目经历中,提炼的关于业务系统,如何对接第三方服务的方法论,希望能对你有所帮助. 随着公司业务的发展,我们有时会遇到,需要在自身业务系统中加 ...
- 分布式、微服务、云架构
分布式.微服务.云架构 JAVA语言开发.跨平台.高性能.高可用.安全.服务化.模块化.組件化.驱动式开发模式 commonservice eureka Netflix 云端服务发现,一个基于 RES ...
最新文章
- 送书!送书!送书!重要的事情说三遍
- 中科院微生物所王军课题组特别研究助理招聘
- 50个linux指令,每天学一个 Linux 命令(50):date
- python中的matplotlib.pyplot_python matplotlib中axes与axis的区别?
- 原生php登录注册,原生php登陆注册
- java将HTML文件转化为pdf文件,如何使用Java将HTML网页转换为PDF文件
- iOS设计模式 - 享元
- composer升级_Composer 使用姿势与 Lumen 升级指南
- 矩阵求多元函数的通解_Hessian矩阵
- windows服务器安装nginx
- 正版python怎么下载_怎么下载官网python并安装
- php 实现联想式 搜索,php实现联想搜索,你会吗?_后端开发
- 57. mysqli 扩展库(4)
- JQuery AJAX 的表单提交
- 投资:螺纹钢研究框架
- 吉利车机安装第三方app教程,支持缤瑞、缤越、博越、博瑞ge、星越等
- SimpleFOC移植STM32(二)—— 开环控制
- 网站黑白色调之filter属性
- 微信扫描登录(生成二维码)
- C盘爆满的解决方案?很可能是因为这个Group2文件夹