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("/agent-sendstatus")
public void testmethod()
{
//How do i get ServletContext here to further implement solution?
template.convertAndSend("/topic/agent-sendstatus","bcd");
}
请建议。 我在控制器中使用SimpMessageHeaderAccessor获取会话,但我也需要ServletContext。 春天有什么办法吗?
答案 0 :(得分:1)
当您升级到WebSocket时,通信中没有涉及HTTP,您在握手期间唯一拥有HTTP的地方。您可以实现HandshakeInterceptor
来获取ServletContext并将任何参数公开给WebSocket会话,因此您可以使用HeaderAccessor在消息处理程序方法中获取它们。查看HttpSessionHandshakeInterceptor以获取示例。