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;
}
}
}