fromJsonString static method

WebSocketMessage fromJsonString(
  1. String jsonString,
  2. SerializationManager serializationManager
)

Converts a JSON string to a WebSocketMessage object.

Throws an UnknownMessageException if the message is not recognized.

Implementation

static WebSocketMessage fromJsonString(
  String jsonString,
  SerializationManager serializationManager,
) {
  try {
    Map data = jsonDecode(jsonString) as Map;

    var messageType = data[WebSocketMessageKey.type];
    var messageData = data[WebSocketMessageKey.data];

    switch (messageType) {
      case PingCommand._messageType:
        return PingCommand();
      case PongCommand._messageType:
        return PongCommand();
      case BadRequestMessage._messageType:
        return BadRequestMessage(messageData);
      case OpenMethodStreamCommand._messageType:
        return OpenMethodStreamCommand(messageData);
      case OpenMethodStreamResponse._messageType:
        return OpenMethodStreamResponse(messageData);
      case CloseMethodStreamCommand._messageType:
        return CloseMethodStreamCommand(messageData);
      case MethodStreamMessage._messageType:
        return MethodStreamMessage(
          messageData,
          serializationManager,
        );
      case MethodStreamSerializableException._messageType:
        return MethodStreamSerializableException(
          messageData,
          serializationManager,
        );
    }

    throw UnknownMessageException(jsonString, error: 'Unknown message type');
  } on UnknownMessageException {
    rethrow;
  } catch (e, stackTrace) {
    throw UnknownMessageException(
      jsonString,
      error: e,
      stackTrace: stackTrace,
    );
  }
}