protoMap.js 1.5 KB

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