首页 > 解决方案 > Stomp JS 基本认证

问题描述

我已经使用 Spring Stomp 实现了一个服务器,现在我正在尝试使用stomp-js rx-stomp连接到我的服务器。我发现真正尴尬的是JS实现不起作用,尽管我已经设法使用Java stomp 客户端使其工作。

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');
    });
}

首先,当我看到一个提示要求我输入用户名和密码时,我觉得真的很尴尬。如果我在那里输入凭据,则客户端连接成功所以,我认为我在连接标头方面一定做错了什么。如您所见,我尝试在那里添加基本身份验证令牌,希望它能解决一些问题。它没有。

标签: javascriptjavawebsocketstompstompjs

解决方案


推荐阅读