import protoRoot from '../proto/proto' //let root = protobufRoot.fromJSON(person); const MsgWebsocket = protoRoot.lookupType('common.MsgWebsocket') const protoMap = { 1005: protoRoot.lookupType('user.login_req'), 1006: protoRoot.lookupType('user.login_rsp'),//登录返回 } function getMsgWebsocket(version, server, servant, buffer) { return MsgWebsocket.create({ version: version, app: 1, server: server, servant: servant, data: buffer, }) } function getRequestBuffer(request, buffer) { let requestMessage = getMsgWebsocket(1, request.server, request.servant, buffer) let requestBuffer = MsgWebsocket.encode(requestMessage).finish() return new Uint8Array([...requestBuffer]).buffer } function getResponseDataBuf(response) { let resBuf = Buffer.from(response.data) let resMessage = MsgWebsocket.decode(resBuf) return resMessage.data } function requestEncode(request) { //请求的编码 let RequestMessage = protoMap[request.servant] let requestMsgObj = RequestMessage.create(request.data) console.log(requestMsgObj); let buffer = RequestMessage.encode(requestMsgObj).finish() //返回请求的ArrayBuffer return getRequestBuffer(request, buffer) } function responseDecode(response) { //响应的解码 let resBuf = Buffer.from(response.data) let resMessage = MsgWebsocket.decode(resBuf) let rspBuf = resMessage.data let ResponseMessage = protoMap[resMessage.servant] let rspMsgObj = ResponseMessage.decode(rspBuf) console.log(rspMsgObj); let obj = ResponseMessage.toObject(rspMsgObj, { longs: String, enums: String, }) return obj } module.exports = { requestEncode, responseDecode, }