Stomp JS基本认证

时间:2019-11-27 17:03:42

标签: javascript java websocket stomp stompjs

我已经使用Spring Stomp实现了服务器,现在我正尝试使用stomp-js rx-stomp连接到服务器。 我发现确实很尴尬的是,虽然我已经设法使用 Java 踩踏客户端使 JS 实现无法正常工作。

Java客户端代码(有效):

WebSocketStompClient stompClient = new WebSocketStompClient(new SockJsClient(createTransportClient()));
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
final String URL = "http://localhost:" + port + "/ws";
// -< Headers used for authentication
WebSocketHttpHeaders headers = new WebSocketHttpHeaders();
String user = "user1", pass = "abcd1234";
headers.add("Authorization", "Basic " + getBasicAuthToken(user, pass));
StompSession stompSession = stompClient.connect(URL, headers, new StompSessionHandlerAdapter() {
}).get(10, TimeUnit.SECONDS);

JS客户端代码(无效):

connect: function() {
    const stompConfig = {
        connectHeaders: {
            login: "user1",
            passcode: "abcd1234",
            Authorization: "Basic dXNlcjE6YWJjZDEyMzQ="
        },
        webSocketFactory: function() {
            return new SockJS("http://localhost:8080/ws");
        },
        reconnectDelay: 60000
    };
    rxStomp = new RxStomp.RxStomp();
    rxStomp.configure(stompConfig);
    rxStomp.activate();

    rxStomp.connected$.subscribe(res => {
        if (res === 1) console.log('connected');
        else console.log('not connected');
    });
}

首先,我发现看到提示要求我输入用户名和密码确实很尴尬。如果我在此处输入凭据,则客户端连接成功。因此,我认为对于 connect标头,我一定做错了。如您所见,我尝试在其中添加 Basic Auth 令牌,希望它能解决某些问题。不是。

0 个答案:

没有答案