我目前在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
答案 0 :(得分:3)
Web套接字最初是通过HTTP协商websockets连接开始的。在此HTTP握手期间,Web服务器可能引发异常,无论如何,它返回HTTP状态代码500.如果没有成功的HTTP响应,Chrome将无法继续协商Web套接字连接。
由于SignalR工作在多个传输上,而不仅仅是websockets,一旦websockets连接失败,它将自动切换到尝试其他传输,如永久帧或轮询,这就是你的连接仍然有用的原因。