我想在stomp頭文件中設置一個用戶名,並在握手期間在Principal對象中設置該用戶名。創建了我自己的HandshakeHandler,但是我無法從方法determinUser中獲取該用戶名,我從DefaultHandshakeHandler重寫了該用戶名。在春天訪問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);
}
}