首页 > 代码库 > kbengine通讯协议
kbengine通讯协议
通讯协议格式
客户端想要与KBEngine进行通讯需要与KBEngine使用相同的协议,KBEngine通讯协议分为如下两种类型:
确定长度类型:
|-----------------------------------------------------------------|Packet = | Len: 2Bytes | Len: N | | (Message-ID: uint16) | (Message-Body: Binary-stream) | |-----------------------------------------------------------------|
不固定长度类型:
|--------------------------------------------------------------------------------------------|Packet = | Len: 2Bytes | Len: 2Bytes | Len: N | | (Message-ID: uint16) | (Message-Length: uint16) | (Message-Body: Binary-stream) | |--------------------------------------------------------------------------------------------|
(注意: 如果消息长度超过65534,Message-Length固定被填充为65535,协议层会在Message-Length区段之后再额外增加4字节,来描述更大的长度信息)(注意: 测试协议请关闭数据包加密, 修改kbengine.xml或kbengine_defs.xml->channelCommon->encrypt_type)
举列一:
void client_funcXX(uint8 p1, int64 p2) ... ...void server_funcXXX() packet.newMessage(ClientInterface::client_funcXX); packet.writeUint8(1); packet.writeInt64(1); |--------------------------------------------------------------------------------|Packet = | Len: 2Bytes | Len: 1, 8 | | (Message-ID(client_funcXX): uint16) | (Message-Body: p1, p2) | |--------------------------------------------------------------------------------|
举列二:
void client_funcXX(uint8 p1, int64 p2, string p3) ... ...void server_funcXXX() packet.newMessage(ClientInterface::client_funcXX); packet.writeUint8(1); packet.writeInt64(1); packet.writeString("123456"); |--------------------------------------------------------------------------------------------|Packet = | Len: 2Bytes | Len: 2Bytes | Len: 1, 8, 7 | | (Message-ID: uint16) | (Message-Length: uint16) | (Message-Body: p1, p2, p3) | |--------------------------------------------------------------------------------------------|
对接服务端引擎级协议
以下协议为客户端需要提供给服务端调用的协议:
onVersionNotMatch 引擎版本不匹配onScriptVersionNotMatch 脚本版本不匹配onKicked 客户端被服务端踢出onImportServerErrorsDescr 导入服务端错误码描述表回调onImportClientEntityDef 导入服务端entitydef描述表回调onImportClientMessages 导入客户端协议表回调onHelloCB 与服务端握手回调onLoginFailed 登录loginapp失败了onLoginSuccessfully 登录loginapp成功了onLoginGatewayFailed 登录baseapp失败了onReLoginGatewayFailed 重登录baseapp失败了onCreatedProxies 服务端通知客户端创建一个能与服务端通讯的代理实体onUpdatePropertysOptimized 更新entity属性(优化的)onUpdatePropertys 更新entity属性(非优化的)onRemoteMethodCallOptimized 服务端调用entity的方法(优化的)onRemoteMethodCall 服务端调用entity的方法(非优化的)onEntityEnterWorld entity进入世界, entity第一次在cellapp上的被创建onEntityLeaveWorld entity离开世界了(非优化的)onEntityLeaveWorldOptimized entity离开世界了(优化的)onEntityEnterSpace entity进入空间了(进入了cellapp中的场景或者副本房间等)onEntityLeaveSpace entity离开空间了onCreateAccountResult 创建账号返回结果initSpaceData 当entity进入某个空间后,服务端初始化空间数据setSpaceData 服务端设置空间数据delSpaceData 服务端删除空间数据onEntityDestroyed 某个entity销毁了onUpdateBasePos 服务端更新客户端player基础位置(x, y, z)onUpdateBasePosXZ 服务端更新客户端player基础位置(x, z)onSetEntityPosAndDir 服务端设置客户端player位置和朝向onUpdateData_*** 服务端更新客户端player位置(x, y, z)或朝向(yaw, pitch, roll)onStreamDataStarted 流数据开始下载(streamFileToClient, streamStringToClient)onStreamDataRecv 接收到流数据onStreamDataCompleted 流数据下载完成onReqAccountResetPasswordCB 请求重置账号密码回调onReqAccountBindEmailCB 请求绑定账号E-MAIL回调onReqAccountNewPasswordCB 请求账号新密码回调(忘记密码类功能)
以下为服务端允许客户端调用的协议:
loginapp: hello 客户端请求与loginapp握手 onClientActiveTick 客户端向服务端发送tick心跳 login 请求登录loginapp importClientMessages 请求从loginapp导入引擎协议 importServerErrorsDescr 请求导入服务端错误描述表 reqAccountResetPassword 请求重置账号的密码 reqCreateAccount 请求创建账号baseapp: hello 客户端请求与baseapp握手 onClientActiveTick 客户端向服务端发送tick心跳 loginGateway 请求登录网关baseapp importClientMessages 请求从baseapp导入引擎级协议 importClientEntityDef 请求从baseapp导入脚本定义产生的协议 reLoginGateway 请求重登陆baseapp(断线重连) reqAccountBindEmail 请求绑定账号E-MAIL reqAccountNewPassword 请求账号新密码(忘记密码类功能) onUpdateDataFromClient 更新客户端数据到服务端(player的位置,朝向等) onRemoteMethodCall 客户端请求调用服务端baseapp-entity方法 onRemoteCallCellMethodFromClient 客户端请求调用服务端cellapp-entity方法
kbengine通讯协议
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。