2015-02-04 6 views
4

SignalR 버전 2.2.0을 사용하고 있습니다. 아래의 코드에서는 $가 hubConnection을 정의하지 않는다는 예외가 있습니다. 내가 signalr 스크립트에서 중단 점을 설정하고 공격을 받았기 때문에 스크립트 경로가 올바른지 알고 있습니다. hubConnection 함수가 정의 된 곳에서 단계를 밟아도 여전히 예외가 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

<script type="text/javascript" src="~/scripts/jquery-1.10.2.min.js"></script> 
<script type="text/javascript" src="~/scripts/jquery.signalR-2.2.0.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     initAvailabilitySignalR("D420A92E163C43AB85CE342D5C10106B"); 
    }); 

    function initAvailabilitySignalR(tenantId) { 
     try { 
      var connection = $.hubConnection(); 

      var proxy = connection.createHubProxy('SignalRHub'); 

      proxy.on('AvailabilityChangedNotification', function(message) { 
       try { 
        alert(message.UserId + " changed from " + message.OldAvailabilityId + " to " + message.NewAvailabilityId); 
       } catch(ex) { 
        alert("Exception[On]: " + ex); 
       } 
      }); 

      connection.start().done(function() { 
       try { 
        proxy.invoke("Connect", tenantId, "SOMEDOMAIN\\someuser"); 
       } catch(ex) { 
        alert("Exception: " + ex); 
       } 
      }); 
     } catch(ex) { 
      alert("Exception: " + ex); 
     } 
    }; 
</script> 

답변

2

내가 문제를 발견했다. ASP.NET MVC가 페이지 맨 아래에 JQuery를 렌더링한다는 사실을 잊어 버렸습니다. 렌더링 문을 페이지 맨 위로 옮기고 JQuery에 대한 명시 적 선언을 뷰에서 제거하고 이제는 작동합니다.

0

SignalR이 작동하려면 당신은이 스크립트 태그를 포함해야합니다

<script src="~/signalr/hubs"></script> 
+0

아니요, 그럴 필요는 없습니다. 자동 생성 된 프록시가 필요하지 않습니다. 나는 그것을 시도했지만, 문제를 해결하지는 못한다. –

관련 문제