我正在将 Websockets SockJS 与 Spring MVC 框架一起使用。我尝试了工作正常的股票行情代码示例,但现在我想在我的 Controller 中获取 session ,但我找不到出路。
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.
最佳答案
如果您指的是 WebSocket session ,Spring 4.1 允许您在传入客户端消息的 header 中获取 session 属性,这些属性可以通过 SimpMessageHeaderAccessor
访问。
@MessageMapping("/topic/agent-sendstatus")
public void testmethod(SimpMessageHeaderAccessor headerAccessor) {
String sessionId = headerAccessor.getSessionId(); // Session ID
Map<String, Object> attrs = headerAccessor.getSessionAttributes(); // Session Attributes
...
}
关于session - 使用 Websockets 时无法在 Spring Controller 中获取 Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25842009/