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

时间:2014-07-09 15:55:01

标签: websocket signalr

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

JS Hub Connection

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!'); });
        }

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

enter image description here

1 个答案:

答案 0 :(得分:3)

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

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