Search in sources :

Example 1 with GraphQLMessageType

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;
        }
    }
}
Also used : GraphQLMessageType(org.activiti.cloud.services.notifications.graphql.ws.api.GraphQLMessageType) SimpMessageType(org.springframework.messaging.simp.SimpMessageType) GraphQLMessage(org.activiti.cloud.services.notifications.graphql.ws.api.GraphQLMessage) Message(org.springframework.messaging.Message) MessageHeaders(org.springframework.messaging.MessageHeaders) GraphQLMessage(org.activiti.cloud.services.notifications.graphql.ws.api.GraphQLMessage) Principal(java.security.Principal)

Aggregations

Principal (java.security.Principal)1 GraphQLMessage (org.activiti.cloud.services.notifications.graphql.ws.api.GraphQLMessage)1 GraphQLMessageType (org.activiti.cloud.services.notifications.graphql.ws.api.GraphQLMessageType)1 Message (org.springframework.messaging.Message)1 MessageHeaders (org.springframework.messaging.MessageHeaders)1 SimpMessageType (org.springframework.messaging.simp.SimpMessageType)1