使用Websockets时无法在Spring Controller中获取Session

abc*_*bcd 4 session sockjs spring-websocket

我正在使用带有Spring MVC Framework的Websockets SockJS.我尝试了正常工作的股票代码示例,但现在我想在我的控制器中获取会话,但我无法找到出路.

Client Code:
$scope.socket = new SockJS("ws/ws"); 
$scope.stompClient = Stomp.over($scope.socket); 
$scope.stompClient.connect("guest", "guest",connectCallback, errorCallback);

//in connectCallback
$scope.stompClient.subscribe('/topic/agent-sendstatus', showScreenPop);

    Java Code:
    @MessageMapping("/topic/agent-sendstatus")
        public void testmethod()
        {
            //How do i get Session here to further implement solution?

            template.convertAndSend("/topic/agent-sendstatus","bcd");
        }

Please suggest.
Run Code Online (Sandbox Code Playgroud)

Ser*_*mar 6

如果您指的是WebSocket会话,Spring 4.1允许您在传入的客户端消息的标头中获取会话属性,这些消息可以通过SimpMessageHeaderAccessor.

@MessageMapping("/topic/agent-sendstatus")
public void testmethod(SimpMessageHeaderAccessor headerAccessor) {
    String sessionId = headerAccessor.getSessionId(); // Session ID
    Map<String, Object> attrs = headerAccessor.getSessionAttributes(); // Session Attributes
    ...
}
Run Code Online (Sandbox Code Playgroud)