SignalR 和 websocket 连接失败,但仍然有效

Mik*_*ynn 4 websocket signalr

我目前在 Chrome 控制台中收到以下错误,但它仍然与 SignalR 成功连接。我收到此错误的任何原因?

JS 集线器连接

scheduleHub = $.connection.scheduleHub;
        scheduleHub.client.viewing = function (name, message) {
            app.showWarning(message, name, function () {
                app.refreshHash();
            });
        };

        if ($.connection.hub && $.connection.hub.state === $.signalR.connectionState.disconnected) {
            $.connection.hub.qs = { "eventid": options.eventId };
            $.connection.hub.start()
                .done(function () {
                    alert('Connected');
                    //scheduleHub.server.viewing('wow', 'test');
                })
                .fail(function() { alert('Could not Connect!'); });
        }
Run Code Online (Sandbox Code Playgroud)

Chrome 控制台

WebSocket connection to 'ws://localhost:2222/signalr/connect?transport=webSockets&clientProtocol=1.4&eventid=23919&connectionToken=CV3wchrj88t6FdjgA%2BREdzEDIw0rhW6r2aUrb%2BI8qInsb3Y9BqQSOscPxfAZ2g0Dxl704usqdBBn%2BNSFKpjVNOtwASndOweD1kGWPCkWEbtJBMu%2B&connectionData=%5B%7B%22name%22%3A%22schedulehub%22%7D%5D&tid=5' failed: Error during WebSocket handshake: Unexpected response code: 500
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Tim*_*ith 6

Web Sockets 最初通过 HTTP 协商 websockets 连接开始。在这次 HTTP 握手期间,Web 服务器可能引发了异常,无论如何,它都会返回 HTTP 状态代码 500。如果没有成功的 HTTP 响应,Chrome 就无法继续协商 Web 套接字连接。

由于 SignalR 可在多种传输上工作,而不仅仅是 Websocket,因此一旦 Websockets 连接失败,它将自动切换到尝试其他传输,例如永久帧或轮询,这就是您的连接仍然有效的原因。

  • Chrome 不是问题所在,网络服务器才是错误的根源。 (4认同)
  • 正如我之前所说...您的控制台只是说您的网络*服务器*正在返回错误。您尝试调试您的服务器了吗? (2认同)