DefaultWebSocketMessageParser.java
package sprout.server.websocket.message;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import sprout.beans.annotation.Component;
import sprout.server.websocket.WebSocketFrame;
import sprout.server.websocket.WebSocketFrameDecoder;
import java.io.IOException;
@Component
public class DefaultWebSocketMessageParser implements WebSocketMessageParser{
private final ObjectMapper objectMapper;
public DefaultWebSocketMessageParser(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
@Override
public ParsedMessage parse(String messageContent) throws Exception {
JsonNode rootNode = objectMapper.readTree(messageContent);
if (rootNode.has("destination") && rootNode.get("destination").isTextual() &&
rootNode.has("payload")
) {
return new ParsedMessage(rootNode.get("destination").asText(), rootNode.get("payload").toString());
}
throw new IOException("Invalid WebSocket message: " + messageContent);
}
}