I set up a Spring WebSocket server with the following handler:
public class HandshakeHandler extends DefaultHandshakeHandler {
@Override
protected Principal determineUser(ServerHttpRequest request,
WebSocketHandler handler, Map<String, Object> attributes) {
HttpHeaders headers = request.getHeaders();
System.out.println(headers.toString());
...
}
}
And according to the StompJS docs, I am sending the headers as follows:
let socket = new SockJS("/greetings");
let stompClient = Stomp.over(socket);
stompClient.connect({
key1: "value1",
key2: "value2",
key3: "value3"
}, frame => {
stompClient.subscribe("/user/queue/greetings", greeting => {
console.log(greeting.body);
})
})
However the log does not show the headers. Here is an example of what is logged:
[host:"localhost:8080", connection:"Upgrade", pragma:"no-cache", cache-control:"no-cache", user-agent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36", upgrade:"websocket", origin:"http://localhost:8080", sec-websocket-version:"13", accept-encoding:"gzip, deflate, br", accept-language:"en-US,en;q=0.9", sec-websocket-key:"YXYdFogQD4AFDT3gvdSyMg==", sec-websocket-extensions:"permessage-deflate; client_max_window_bits"]
What am I doing wrong?