stompヘッダーにユーザー名を設定し、ハンドシェイク中にそのユーザー名をPrincipalオブジェクトに設定したいとします。私自身のHandshakeHandlerを作成しましたが、私はDefaultHandshakeHandlerからオーバーライドしているメソッドのユーザー名を取得することができません。SpringのStompヘッダーへのアクセス
ご協力いただければ幸いです。ここに関連するコードです - >
はここに私のクライアントコードです - >
var from = document.getElementById('username').value;
var socket = new SockJS('/WebSocketsChat/chat');
stompClient = Stomp.over(socket);
stompClient.connect({userName:from,sampleMsg:"Hello"},
function(frame) {
// Some more code here
そして、ここでは私のHandShakeHandlerだ - >
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat").setHandshakeHandler(new RandomUserNameHandshakeHandler()).withSockJS();
}
private class RandomUserNameHandshakeHandler extends DefaultHandshakeHandler{
@Override
protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map<String,Object> attributes){
// Some Code that would give me the username set in Stomp Header
// For now i am randomly generating a username and setting in principal.
String username = "user"+"-"+ new Random().nextInt(100);
return new UsernamePasswordAuthenticationToken(username,null);
}
}