Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript StompJSBasicAuth_Javascript_Java_Websocket_Stomp_Stompjs - Fatal编程技术网

Javascript StompJSBasicAuth

Javascript StompJSBasicAuth,javascript,java,websocket,stomp,stompjs,Javascript,Java,Websocket,Stomp,Stompjs,我已经用SpringStomp实现了一个服务器,现在我正试图用SpringStomp连接到我的服务器。 我发现真正令人尴尬的是,JS实现不起作用,尽管我已经设法使用Javastomp客户端使其起作用 Java客户机代码(有效): WebSocketStompClient stompClient=new-WebSocketStompClient(new-SockJsClient(createTransportClient()); setMessageConverter(新的MappingJacks

我已经用SpringStomp实现了一个服务器,现在我正试图用SpringStomp连接到我的服务器。 我发现真正令人尴尬的是,JS实现不起作用,尽管我已经设法使用Javastomp客户端使其起作用

Java客户机代码(有效):

WebSocketStompClient stompClient=new-WebSocketStompClient(new-SockJsClient(createTransportClient());
setMessageConverter(新的MappingJackson2MessageConverter());
最终字符串URL=”http://localhost:“+端口+”/ws”;
//-<用于身份验证的头文件
WebSocketHttpHeaders headers=新的WebSocketHttpHeaders();
字符串user=“user1”,pass=“abcd1234”;
添加(“授权”、“基本”+getBasicAuthToken(用户、通行证));
StompSession StompSession=stompClient.connect(URL、标题、新的StompSessionHandlerAdapter(){
}).get(10,时间单位秒);
JS客户端代码(不工作):

connect:function(){
常量stompConfig={
连接头:{
登录名:“user1”,
密码:“abcd1234”,
授权:“基本DXNLCJE6YWJZDEYMZQ=”
},
webSocketFactory:函数(){
返回新的SockJS(“http://localhost:8080/ws");
},
重新连接延迟:60000
};
rxStomp=新的rxStomp.rxStomp();
configure(stompConfig);
rxStomp.activate();
rxStomp.connected$.subscribe(res=>{
if(res==1)console.log('connected');
else console.log(“未连接”);
});
}

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

您是否需要在ConnectHeader中设置
访问\u令牌
而不是
授权
?来自stompjs文档:
连接头、重要键-登录、密码、主机
。您似乎缺少主机。如果上述操作不起作用,那么在beforeConnect函数中设置
access\u token
可能是值得的?只是这样做了,它不会修复任何问题。但这会起什么作用?stomp js不按原样将头发送到服务器吗?Java客户端通过设置标题“Authorization”来工作。我认为在这里也是一样的。它不会给我任何关于在ConnectHeader中不指定主机的错误,所以我认为我不需要指定它。