use of org.activiti.cloud.services.notifications.graphql.ws.api.GraphQLMessageType in project activiti-cloud by Activiti.
the class GraphQLBrokerMessageHandler method handleMessageInternal.
@SuppressWarnings("unchecked")
@Override
protected void handleMessageInternal(Message<?> message) {
MessageHeaders headers = message.getHeaders();
SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(headers);
String destination = SimpMessageHeaderAccessor.getDestination(headers);
String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
Principal user = SimpMessageHeaderAccessor.getUser(headers);
updateSessionReadTime(sessionId);
if (!checkDestinationPrefix(destination)) {
return;
}
if (SimpMessageType.MESSAGE.equals(messageType) && message.getPayload() instanceof GraphQLMessage) {
logMessage(message);
Message<GraphQLMessage> graphQLMessage = (Message<GraphQLMessage>) message;
GraphQLMessageType graphQLMessagePayloadType = graphQLMessage.getPayload().getType();
switch(graphQLMessagePayloadType) {
case CONNECTION_INIT:
if (!isBrokerAvailable()) {
sendErrorMessageToClient(BROKER_NOT_AVAILABLE, GraphQLMessageType.CONNECTION_ERROR, message);
return;
}
long[] clientHeartbeat = SimpMessageHeaderAccessor.getHeartbeat(headers);
long[] serverHeartbeat = getHeartbeatValue();
this.sessions.put(sessionId, new SessionInfo(sessionId, user, clientHeartbeat, serverHeartbeat));
handleConnectionInitMessage(graphQLMessage);
break;
case START:
// start subscription
if (!isBrokerAvailable()) {
sendErrorMessageToClient(BROKER_NOT_AVAILABLE, GraphQLMessageType.ERROR, message);
return;
}
handleStartSubscription(graphQLMessage);
break;
case STOP:
// stop subscription
handleStopSubscription(graphQLMessage);
break;
case CONNECTION_TERMINATE:
// end connection
handleConnectionTerminate(graphQLMessage);
break;
default:
break;
}
}
}
Aggregations