【问题标题】:Failed to start the connection: Error: WebSocket failed to connect无法启动连接:错误:WebSocket 连接失败
【发布时间】: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平台
  • 对我来说,问题在于我们的流量位于导致问题的代理后面。这个答案帮助了我:stackoverflow.com/a/68732723/8644294

标签: angular asp.net-core signalr


【解决方案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 像:

【讨论】:

  • 本地服务在我们这边运行良好。在线服务出现问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 2019-08-30
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
相关资源
最近更新 更多