自定义标题:
stompClient.connect({token: "ABC123"}, function(frame) { ... code ...});
没有自定义标题:
stompClient.connect({}, function(frame) { ... code ...});
在 Javascript 中,您可以使用以下方法提取 STOMP 标头:
username = frame.headers['user-name'];
在服务器端,如果您使用 Spring Framework,您可以实现一个拦截器来将 HTTP 参数复制到 WebSockets STOMP 标头。
public class HttpSessionHandshakeInterceptor_personalised implements HandshakeInterceptor {
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
// Set ip attribute to WebSocket session
attributes.put("ip", request.getRemoteAddress());
// ============================================= CODIGO PERSONAL
ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
HttpServletRequest httpServletRequest = servletRequest.getServletRequest();
// httpServletRequest.getCookies();
// httpServletRequest.getParameter("inquiryId");
// httpServletRequest.getRemoteUser();
String token = httpServletRequest.getParameter("token");
...
}
}
对于没有 STOMP 参数的发送消息:
function sendMessage() {
var from = document.getElementById('from').value;
var text = document.getElementById('text').value;
stompClient.send("/app/chatchannel", {},
JSON.stringify({'from':from, 'text':text}));
}
在这里您将参数传递到 STOMP 标头中。
function sendMessage() {
var from = document.getElementById('from').value;
var text = document.getElementById('text').value;
stompClient.send("/app/chatchannel", {'token':'AA123'},
JSON.stringify({'from':from, 'text':text}));
}