2014-07-09 2 views
3

현재 Chrome 콘솔에서이 오류가 발생하고 있지만 여전히 SignalR과 성공적으로 연결됩니다. 이 오류가 발생하는 이유는 무엇입니까?SignalR 및 websocket 연결에 실패했지만 여전히 작동합니다.

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

크롬 콘솔

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

+0

서버로 사용하고있는 운영 체제는 무엇입니까? 웹 소켓을 사용하려면 Windows 8 또는 2012가 필요합니다. – vtortola

+0

Windows 8.1 64 비트 –

+0

괜찮겠습니다. SignalR에 로그인하여 오류를 확인하십시오. – vtortola

답변

3

웹 소켓은 처음에 HTTP를 통해 WebSocket을 연결을 협상에 의해 시작됩니다. 이 HTTP 핸드 셰이크가 진행되는 동안 웹 서버는 예외를 발생 시켰지만 HTTP 상태 코드 500을 반환합니다. HTTP 응답이 성공하지 않으면 Chrome은 웹 소켓 연결을 계속 협상 할 수 없습니다.

SignalR은 웹 소켓뿐만 아니라 여러 전송을 통해 작동하므로 웹 소켓 연결이 실패하면 영원히 프레임이나 폴링과 같은 다른 전송을 시도하도록 자동 전환됩니다. 이는 연결이 여전히 작동하는 이유입니다.

+0

Chrome에서 웹 소켓을 사용할 수 있습니까? –

+4

크롬이 문제가되지 않습니다. 웹 서버는 오류가 발생한 곳입니다. –

+0

콘솔의 스크린 샷을 추가했습니다. –

관련 문제