import { common, user } from '../proto/bundle.js'; const protoMap = { 1005: user.login_req,//登录请求 1006: user.login_rsp,//登录返回 1002: user.wxLoginRsp,//登录返回 } function getMsgWebsocket(version, server, servant, buffer) { return common.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 = common.MsgWebsocket.encode(requestMessage).finish() return new Uint8Array([...requestBuffer]).buffer } function getResponseDataBuf(response) { let resBuf = Buffer.from(response.data) let resMessage = common.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(buffer) { //响应的解码 let resBuf = Buffer.from(buffer) let resMessage = common.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, defaults: true, }) return obj } module.exports = { requestEncode, responseDecode, }