WebSocket 连接到 'ws://localhost:8081/.../.../...' 失败:HTTP 身份验证失败;没有可用的有效凭据
Posted
技术标签:
【中文标题】WebSocket 连接到 \'ws://localhost:8081/.../.../...\' 失败:HTTP 身份验证失败;没有可用的有效凭据【英文标题】:WebSocket connection to 'ws://localhost:8081/.../.../...' failed: HTTP Authentication failed; no valid credentials availableWebSocket 连接到 'ws://localhost:8081/.../.../...' 失败:HTTP 身份验证失败;没有可用的有效凭据 【发布时间】:2018-12-18 03:42:04 【问题描述】:我必须在我的项目中使用 Angular 2 的 Websocket 连接 我无法创建带有错误的 Websocket 连接 '到 'ws://localhost:8081/.../.../..' 的 WebSocket 连接失败:HTTP 身份验证失败;没有可用的有效凭据' 这是我的代码
var socket = new WebSocket('ws:localhost:8081/../../..');
我已经堆了几天了。请知道这件事的任何人帮助我。
最好的问候
【问题讨论】:
【参考方案1】:您可以使用 rxjs 库中的 websocket 包装器。
像这样导入:
import webSocket, WebSocketSubject from 'rxjs/webSocket';
然后像这样创建一个:
private webSocket: WebSocketSubject = webSocket(environment.chatUrl);
然后您可以订阅它以获取入站消息:
this.subscription = this.webSocket.subscribe(
msg =>
// do something with the message
,
err =>
// handle the error
console.log('error!', err);
,
() =>
// handle getting disconnected
console.log('websocket closed');
);
并发送消息:
this.webSocket.next(message);
完成后不要忘记取消订阅 websocket。
【讨论】:
谢谢。但终于意识到,如果我添加 spring-security.jar 并发生错误,则会发生错误是因为 Websocket Server with java。【参考方案2】:这是由于以下原因而发生的 您的 http url 和 websocket url 在身份验证时不匹配
您的 http 网址是
http://localhost:port/something..
你的 websocket 网址是
var webs = new WebSocket("ws://192.168...:port/something..");
反之亦然
要解决此问题,请保持两个网址相同
【讨论】:
以上是关于WebSocket 连接到 'ws://localhost:8081/.../.../...' 失败:HTTP 身份验证失败;没有可用的有效凭据的主要内容,如果未能解决你的问题,请参考以下文章
WebSocket 连接到 'ws://localhost:4444/subscriptions' 失败:WebSocket 在连接建立之前关闭