2017-05-19 5 views
0

내가 signalr 허브와 연결하기 위해 노력하고있어,하지만 난 자바 스크립트에서 다음과 같은 오류를 받고 있어요 :SignalR - 웹 소켓 핸드 셰이크 중에 오류 : 예기치 않은 응답 코드 : 504

WebSocket connection to 'ws://dev:777/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=%2BRUC9XodaU4R3Wn3BSLfhZXxLqeLj9fp4XlLJSsxrc36dFuEo6O9GOIGYMdsgSeswY2DTzzJe9qCe9JnqgjwusbYROxjkY%2B6d9FD4MVpox4FLEqNzCF5Y%2BOqrY5ndNs%2FRl7aOoKIYelpGmerXj4mdw%3D%3D&connectionData=%5B%7B%22name%22%3A%22machinehub%22%7D%5D&tid=5' failed: Error during WebSocket handshake: Unexpected response code: 504 

을 한 후 콘솔에서

나는 허브에서 내 메소드를 호출하는 등의 코드를 사용하고
Could not connect. Invocation of StartMachine failed. Error: No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization. 

하는 :

self.Run = function (action, parameters, callbacks) { 
    try { 
     var connection = $.hubConnection(); 
     connection.logging = self.Debug; 
     var hub = connection.createHubProxy(self.Name); 

     registerConnectionEvents(connection); 
     registerEvents(hub, callbacks); 

     connection.start({ transport: ['webSockets'] }) 
      .done(function() { 
       self.debug("Now connected!"); 

       hub.invoke.apply(hub, $.merge([action], parameters)).fail(function (error) { 
        var msg = 'Invocation of ' + action + ' failed. ' + error; 
        self.debug(msg); 
       });     
      }) 
      .fail(function (error) { 
       var msg = 'Could not connect. Invocation of ' + action + ' failed. ' + error; 
      self.debug(msg); 
     }); 

     return true; 
    } 

나는 SIG 내 MVC5 응용 프로그램을 실행하면 Visual Studio의 모든 부분이 정상적으로 작동합니다. Windows Server 2012에서 IIS8로 게시 한 후 신호 r의 웹 소켓을 통해 연결할 수 없습니다. 테스트를 위해 두 방화벽을 모두 끄려고했으나 성공하지 못했습니다. 그 문제를 해결하도록 도와 줄 수 있습니까? 물론 그 페이지에서 모든 내용을 읽습니다. https://docs.microsoft.com/en-us/aspnet/signalr/

답변

0

SignalR이 WebSocket과 제대로 작동하려면 클라이언트와 서버가 모두 WebSocket을 지원해야합니다. 로컬에서 테스트가 잘되면 브라우저가 이미 지원할 것입니다.

윈도우 서버 2012 SignalR을 지원하지만이 활성화되어 있는지 WebSocket을 할 기능이 필요합니다

enter image description here

를이 이미 사용하고있는 경우, 귀하의 응용 프로그램 풀을 재활용 (또는 IIS를 재설정)보십시오. 재활용/리셋이 충분하지 않은 경우


는, 당신은 당신이하지 수있는 네트워크 방화벽과 같은 프록시 서버 또는 다른 보안 계층과 같은 서버와 클라이언트 사이에 뭔가 다른, (있을 수 있습니다 액세스 권한이 있음) 엔터프라이즈 환경이나 아마존과 같은 장소에서 호스팅되는 서버에서 포트를 차단할 수 있습니다.

+0

WebSocket 프로토콜을 설치했지만 신호 r은 긴 풀링을 가진 generatd 프록시에서만 작동합니다. 나는 websocket이 리셋되는 이유를 모른다. –

+0

@MarekBar 어떤 브라우저를 사용하십니까? websocket을 설치 한 후 서버를 다시 시작 했습니까? 꼭 필요한 것은 아니지만 우리는 결코 알지 못합니다 ... – Alisson