无法启动连接:错误:WebSocket 连接失败

Posted

技术标签:

【中文标题】无法启动连接:错误:WebSocket 连接失败【英文标题】:Failed to start the connection: Error: WebSocket failed to connect 【发布时间】:2022-01-09 22:29:55 【问题描述】:

错误:无法启动连接:错误:WebSocket 无法启动 连接。在服务器上找不到连接,要么 端点可能不是 SignalR 端点,连接 ID 不是 存在于服务器上,或者存在阻止 WebSockets 的代理。如果你 让多台服务器检查是否启用了粘性会话。

WebSocketTransport.js:49 WebSocket 连接到 'ws://xxxxxx/production/web-services/hubs/spreadhub' 失败:

Angular.ts

 ngOnInit(): void 

      // For signalR Hub connection
      this.connection  = new HubConnectionBuilder()  
      .withUrl('http://xxx.xxx.com/production/web-services/hubs/spreadhub',   // localhost from **AspNetCore3.1 service**
        skipNegotiation: true,
        transport: signalR.HttpTransportType.WebSockets
      )  
      .build();

        this.connection.on('dataReceived', (data: string) => 
          var model = JSON.parse(data);

      );
  
      this.connection.start().then(() =>  // to start the server
             console.log('server connected!!!');
         ).catch(err => console.log(err));
  

【问题讨论】:

你在哪里运行的?在linux还是windows上?我也面临同样的问题。我在 httpd 和 kestrel 上。我认为这与 httpd 中不允许或转发到 kestrel 的 Web 套接字连接有关。 windows平台 对我来说,问题在于我们的流量位于导致问题的代理后面。这个答案帮助了我:***.com/a/68732723/8644294 【参考方案1】:

您不需要指定完整的 url,只需要指定您要连接到的集线器...假设您的集线器名称是 spreadhub,您只需要:

this.connection  = new HubConnectionBuilder()  
    .withUrl('https://localhost:5001/spreadhub',   // localhost from **AspNetCore3.1 service**
    skipNegotiation: true,
    transport: signalR.HttpTransportType.WebSockets
    )  
    .build();

在服务器上,如果部署到 azure,别忘了打开 websockets 像:

【讨论】:

本地服务在我们这边运行良好。在线服务出现问题

以上是关于无法启动连接:错误:WebSocket 连接失败的主要内容,如果未能解决你的问题,请参考以下文章

抑制“与 'xyz' 的 WebSocket 连接失败”

WebSocket 连接失败。 WebSocket握手期间出错-socketjs

WebSocket DeploymentException 连接失败

由于 BoringSSL 证书验证失败,iOS 上的安全 websocket 连接失败

动作线无法连接(升级到 WebSocket 失败)

ws 如何捕获:到 'ws:// 的 WebSocket 连接失败:连接建立错误:net::ERR_CONNECTION_REFUSED