首页 > 代码库 > 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通讯协议