ProtoMap.js 1.5 KB

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