protoMap_json.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import protoRoot from '../proto/proto'
  2. //let root = protobufRoot.fromJSON(person);
  3. const MsgWebsocket = protoRoot.lookupType('common.MsgWebsocket')
  4. const protoMap = {
  5. 1005: protoRoot.lookupType('user.login_req'),
  6. 1006: protoRoot.lookupType('user.login_rsp'),//登录返回
  7. }
  8. function getMsgWebsocket(version, server, servant, buffer) {
  9. return MsgWebsocket.create({
  10. version: version,
  11. app: 1,
  12. server: server,
  13. servant: servant,
  14. data: buffer,
  15. })
  16. }
  17. function getRequestBuffer(request, buffer) {
  18. let requestMessage = getMsgWebsocket(1, request.server, request.servant, buffer)
  19. let requestBuffer = MsgWebsocket.encode(requestMessage).finish()
  20. return new Uint8Array([...requestBuffer]).buffer
  21. }
  22. function getResponseDataBuf(response) {
  23. let resBuf = Buffer.from(response.data)
  24. let resMessage = MsgWebsocket.decode(resBuf)
  25. return resMessage.data
  26. }
  27. function requestEncode(request) { //请求的编码
  28. let RequestMessage = protoMap[request.servant]
  29. let requestMsgObj = RequestMessage.create(request.data)
  30. console.log(requestMsgObj);
  31. let buffer = RequestMessage.encode(requestMsgObj).finish()
  32. //返回请求的ArrayBuffer
  33. return getRequestBuffer(request, buffer)
  34. }
  35. function responseDecode(response) { //响应的解码
  36. let resBuf = Buffer.from(response.data)
  37. let resMessage = MsgWebsocket.decode(resBuf)
  38. let rspBuf = resMessage.data
  39. let ResponseMessage = protoMap[resMessage.servant]
  40. let rspMsgObj = ResponseMessage.decode(rspBuf)
  41. console.log(rspMsgObj);
  42. let obj = ResponseMessage.toObject(rspMsgObj, {
  43. longs: String,
  44. enums: String,
  45. })
  46. return obj
  47. }
  48. module.exports = {
  49. requestEncode,
  50. responseDecode,
  51. }