public parseMessage()

in sdk/server-proxies/src/tunnels/TunnelMessageProtocol.ts [47:85]


  public parseMessage(data: Uint8Array): TunnelMessage | undefined {
    const lengthHeader = data.slice(0, 4);
    const view = new DataView(lengthHeader.buffer);
    const length = view.getInt32(0, true);
    const content = data.slice(4, length + 4);
    const array = decode(content) as Array<any>;
    const type: number = array[0];
    const json: string = array[1];
    const body: Uint8Array = array[2];
    switch (type) {
      case TunnelMessageType.HttpRequest:
        const request = JSON.parse(json) as TunnelHttpRequestMessage;
        request.Content = body;
        return request;
      case TunnelMessageType.HttpResponse:
        const response = JSON.parse(json) as TunnelHttpResponseMessage;
        response.Content = body;
        return response;

      case TunnelMessageType.ServiceStatus: {
        return JSON.parse(json) as TunnelServiceStatusMessage;
      }
      case TunnelMessageType.ConnectionReconnect: {
        return JSON.parse(json) as TunnelConnectionReconnectMessage;
      }
      case TunnelMessageType.ConnectionClose: {
        return JSON.parse(json) as TunnelConnectionCloseMessage;
      }
      case TunnelMessageType.ConnectionConnected: {
        return JSON.parse(json) as TunnelConnectionConnectedMessage;
      }
      case TunnelMessageType.ConnectionRebalance: {
        return JSON.parse(json) as TunnelConnectionRebalanceMessage;
      }
      default: {
        return undefined;
      }
    }
  }