5

I know how to disconnect Sessions from Client Side, but I couldn't find a way to disconnect my session from my Spring Boot Backend. I've already seen the following post:

Disconnect client session from Spring websocket stomp server

This would kinda adress my problem, but I thought maybe there is a much more elegant or easier way to solve my problem, since the above mentioned post is already 8 years old. And still i couldn't get it to work as expected.

Trying to sketch my exact problem: JS-Client-Side looks like this(pseudo code): ![creates a simple request and sends it to my Spring Backend]

function subscribeToUser(){
    request = {};
    request.type = "USER";

    var user = {};
    user.userId = userId;
    user.email = email;

    request.user = user;
    send(request);
}

Server-Side: Here I detect a Subscribe Event, extract the destination, and check if it is valid. If there is some problem with the destination I want my server to disconnect from that client.(This should happen in line 122)

@EventListener
private void handleSessionSubscribe(SessionSubscribeEvent event){
    String destination = 
    event.getMessage().getHeaders().get("simpDestination").toString();
    Principal p = canSubscribeToThatEndpoint(destination, 
    event.getUser());
}

private Principal canSubscribeToThatEndpoint(String dest, Principal 
user){

    if(dest.containt("some invalid thing")){
        //close the session from server-side
    }else return user;
}

I already tried to follow the mentioned StackOverflow Post but I couldn't get it to run. Also another method would be to send a message from the backend and trigger a disconnect Event in JS. But I think it would be convient(if there is a way) to access current client sessions in Backend and disconnect from them if needed.

Bombermán
  • 51
  • 3

0 Answers0