protoMap.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. }
  9. function getMsgWebsocket(version, server, servant, buffer) {
  10. return common.MsgWebsocket.create({
  11. version: version,
  12. app: 1,
  13. server: server,
  14. servant: servant,
  15. data: buffer,
  16. })
  17. }
  18. function getRequestBuffer(request, buffer) {
  19. let requestMessage = getMsgWebsocket(1, request.server, request.servant, buffer)
  20. let requestBuffer = common.MsgWebsocket.encode(requestMessage).finish()
  21. return new Uint8Array([...requestBuffer]).buffer
  22. }
  23. function getResponseDataBuf(response) {
  24. let resBuf = Buffer.from(response.data)
  25. let resMessage = common.MsgWebsocket.decode(resBuf)
  26. return resMessage.data
  27. }
  28. function requestEncode(request) { //请求的编码
  29. let RequestMessage = protoMap[request.servant]
  30. let requestMsgObj = RequestMessage.create(request.data)
  31. console.log(requestMsgObj);
  32. let buffer = RequestMessage.encode(requestMsgObj).finish()
  33. //返回请求的ArrayBuffer
  34. return getRequestBuffer(request, buffer)
  35. }
  36. function responseDecode(response) { //响应的解码
  37. let resBuf = Buffer.from(response.data)
  38. let resMessage = common.MsgWebsocket.decode(resBuf)
  39. let rspBuf = resMessage.data
  40. let ResponseMessage = protoMap[resMessage.servant]
  41. let rspMsgObj = ResponseMessage.decode(rspBuf)
  42. console.log(rspMsgObj);
  43. let obj = ResponseMessage.toObject(rspMsgObj, {
  44. longs: String,
  45. enums: String,
  46. })
  47. return obj
  48. }
  49. module.exports = {
  50. requestEncode,
  51. responseDecode,
  52. }