Remove HttpSession timeout and invalidate sessions on websockets close

pull/178/head
pabloFuente 2019-01-08 15:38:53 +01:00
parent cab5138174
commit 1e46ca2287
2 changed files with 10 additions and 0 deletions

View File

@ -175,6 +175,7 @@ public class OpenViduServer implements JsonRpcConfigurer {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
log.info("Using /dev/urandom for secure random generation"); log.info("Using /dev/urandom for secure random generation");
System.setProperty("java.security.egd", "file:/dev/./urandom"); System.setProperty("java.security.egd", "file:/dev/./urandom");
System.setProperty("server.session.timeout", "2137483647");
SpringApplication.run(OpenViduServer.class, args); SpringApplication.run(OpenViduServer.class, args);
} }

View File

@ -24,6 +24,8 @@ import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
import javax.servlet.http.HttpSession;
import org.kurento.jsonrpc.DefaultJsonRpcHandler; import org.kurento.jsonrpc.DefaultJsonRpcHandler;
import org.kurento.jsonrpc.Session; import org.kurento.jsonrpc.Session;
import org.kurento.jsonrpc.Transaction; import org.kurento.jsonrpc.Transaction;
@ -33,6 +35,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.web.socket.WebSocketSession;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@ -562,6 +565,12 @@ public class RpcHandler extends DefaultJsonRpcHandler<JsonObject> {
public void afterConnectionClosed(Session rpcSession, String status) throws Exception { public void afterConnectionClosed(Session rpcSession, String status) throws Exception {
log.info("After connection closed for WebSocket session: {} - Status: {}", rpcSession.getSessionId(), status); log.info("After connection closed for WebSocket session: {} - Status: {}", rpcSession.getSessionId(), status);
if (rpcSession instanceof WebSocketServerSession) {
WebSocketSession wsSession = ((WebSocketServerSession) rpcSession).getWebSocketSession();
HttpSession httpSession = (HttpSession) wsSession.getAttributes().get("httpSession");
httpSession.invalidate();
}
String rpcSessionId = rpcSession.getSessionId(); String rpcSessionId = rpcSession.getSessionId();
String message = ""; String message = "";