1、概述
1.1. 目的
指导合作伙伴的HTML5工程师开发集成sgt平台开放能力。
2、准备
2.1. 技术架构
通讯协议是jsonrpc2.0,https://github.com/Textalk/jquery.jsonrpcclient.js
使用jQuery库
2.2. 引用jQuery和jsonrpc2.0
<script type="text/javascript" src="js/jquery.1.9.1.js"></script> <script type="text/javascript" src="js/jquery.jsonrpcclient.js"></script>
2.2. 定义变量
var sgth5={ Appid:null,//zsd_sgp 应用标识 Appgateway:‘http://…………/route‘,//网关 Approutedata:null,//节点node channelId:null,//标识 username:null,//用户 userpassword:null,//用户密码 userdata:null,//用户信息 playserverdata:null,//player服务器信息 };
用户使用前先填写Appid、Appgateway、channelId信息
2.2. 定义对象
Player对象
var player=function(){ this.customId=null,//String 自定义ID this.equip=null,//String 装备 this.id=0,//String 主键 this.lastLoginTime=sgth5.userdata.lastLoginTime, this.level=null,//int 等级 this.name=null,//String 名字 this.serverId=sgth5.playserverdata.id, this.type=null,//String 类型 this.userId=sgth5.userdata.userid, this.vip=null;//int VIP 等级 };
mail对象
var mail=function(){ this.attachment=null,//String 附件 this.content=null,//String 内容 this.fromId=null,//String 发送者ID this.fromName=null,//String 发送者名称 this.id=null,//主键 this.sendTime=(new Date()).getTime(),//发送时间 this.status=0,//状态 this.title=null,//String 标题 this.toId=null,//String 接收者ID this.toName=null,//String 接收者名称 this.type=0;//类型 };
ticke对象
var Ticke=function(){ this.content=null,//反馈给后台的内容 this.createTime=(new Date()).getTime(),//提交时间 this.feedbackInfo=null,//处理完返回给提交者的信息 this.id=0,//主键 this.senderPlayerId=null,//提交者ID this.status=1,//状态 this.targetPlayerId=null,//目标角色ID this.title=null,//标题 this.type=1;//类型 };
3、接入流程
3.1. url解释
Var backClient=new $.JsonRpcClient({ajaxUrl: ${host}+‘/‘+ ${appid}+‘/${appServer}.do‘ });
3.2 API设计
sgth5.GetPlayerInfo=sgth5.Class.extend({ url:null, playerId:null, userData:null, playerData:null,//当前角色信息 init:function(){ if(sgth5.GetServer.userData==null){ console.log(‘There was an error:‘, ‘没有取得用户数据!‘); return false; } if(sgth5.GetServer.playServerData==null){ console.log(‘There was an error:‘, ‘没获取角色服务器信息!‘); return false; } this.userData=sgth5.GetServer.userData; this.url=sgth5.GetServer.playServerData.address+‘/‘+sgt.AppId+‘/sgpplayer.do‘; return true; }, /**创建角色 * playerinfo palyer对象 * * obj 回调函数 */ creatPlayer:function(playerinfo,obj){ playerinfo.lastLoginTime=this.userData.lastLoginTime; playerinfo.serverId=sgth5.GetServer.playServerData.id; playerinfo.userId=this.userData.userid; var backClient = new $.JsonRpcClient({ ajaxUrl: this.url }); backClient.call( ‘create‘, [playerinfo], function(result){ obj(true,result); }, function(error){ console.log(‘There was an error:‘, error); obj(false,error.message); } ); } …… }); sgth5.GetPlayerInfo.create=function(playerId){ var ret = new sgth5.GetPlayerInfo(); if(playerId!=null){ ret.playerId=playerId; } if (ret && ret.init()) return ret; return null; };
4、API定义
/** * 获取获取注册或登录的服务器api */ sgth5.getnode={ /** * 获取user节点 * type String 类型 * obj 回调函数 */ getRegisterServer:function(type,obj){ …… }, /** * 玩家注册 * * obj 回调函数 */ register:function(obj){ …… }, /** * 玩家登录 * * obj 回调函数 */ login:function(obj){ …… }, /** * 获取player服务器信息 * * obj 回调函数 */ getplayserver:function(obj){ …… } }; /** * 玩家角色API */ sgth5.getplayerinfo={ /**创建角色 * playerinfo palyer对象 * * obj 回调函数 */ creatplayer:function(playerinfo,obj){ …… }, …… …… }; sgth5.GetPlayerInfo.create=function(playerId){ var ret = new sgth5.GetPlayerInfo(); if(playerId!=null){ ret.playerId=playerId; } if (ret && ret.init()) return ret; return null; }; /** * 公告API */ sgth5.announcementinfo=sgth5.Class.extend({ …… …… }); sgth5.announcementinfo.create=function(playerId){ …… }; /** * 签到API */ sgth5.Checkininfo=sgth5.Class.extend({ …… …… }); /** * 排行榜API */ sgth5.LeaderBoardinfo=sgth5.Class.extend({ …… …… }); /** * 邮件API */ sgth5.Mailinfo=sgth5.Class.extend({ …… …… }); /** * 活动业务接口 */ sgth5.Campaigninfo=sgth5.Class.extend({ …… …… }); /** * BOSS业务接口 */ sgth5.Bossinfo=sgth5.Class.extend({ …… …… }); /** * 抽奖业务接口 */ sgth5.GachaBoxinfo=sgth5.Class.extend({ …… …… }); /** * 黑名单业务接口 */ sgth5.Blacklistinfo=sgth5.Class.extend({ …… …… }); /** * 好友业务接口 */ sgth5.Friendshipinfo=sgth5.Class.extend({ …… …… }); /** * 反馈举报 业务接口 */ sgth5.Tickeinfo=sgth5.Class.extend({ …… …… });
第一次开发设计SDK可能有很多不合理的地方,有大神可以指点一下!