我的目標是將具有正確頭的瀏覽器客戶端連接到服務器。我從StompClient傳遞這些頭文件。基於從UI傳遞的令牌在服務器端斷開WebSocket
,其中i。在頭中傳遞令牌我的UI代碼是
function connect() {
var socket = new SockJS('/websocket/api/add');
stompClient = Stomp.over(socket);
stompClient.connect({"token" : "12345"}, function(frame) {
setConnected(true);
console.log('Connected: ' + frame);
});
}
在後端我能夠讀在preSend()的報頭的方法ChannelInterceptorAdapter
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
MessageHeaders headers = message.getHeaders();
System.out.println("preSend : HEADERS : {}" + headers);
return super.preSend(message, channel);
}
但是在這裏我無法關閉wesocket會話。我們怎麼做到這一點?
而且我能關閉WebSocket的會議,但我不能afterConnectionEstablished()WebSocketHandlerDecorator的方法接收頭
public void configureWebSocketTransport(final WebSocketTransportRegistration registration) {
registration.addDecoratorFactory(new WebSocketHandlerDecoratorFactory() {
@Override
public WebSocketHandler decorate(final WebSocketHandler handler) {
return new WebSocketHandlerDecorator(handler) {
@Override
public void afterConnectionEstablished(final WebSocketSession session) throws Exception {
session.close(CloseStatus.NOT_ACCEPTABLE);
super.afterConnectionEstablished(session);
}
};
}
});
super.configureWebSocketTransport(registration);
}
有人能指導我如何關閉基於websocketsession在我們從服務器端的用戶界面傳遞的標題上?
非常感謝您的指點我朝着正確的方向:) –
沒問題:)雖然我認爲有可能是一個更好的解決辦法? – wings