2013-05-26 3 views
1

이 기사에서 데모를 채택하려고하는데 http://www.asp.net/signalr/overview/getting-started/tutorial-high-frequency-realtime-with-signalr은 vS2012로 개발되었지만 vs2010을 사용하고 있습니다.MVC 3 - SignalR moveshape 샘플

[HubName("moveShapeHub")] 
    public class MoveShapeHub : Hub 
    { 
     public void UpdateModel(ShapeModel clientModel) 
     { 
      clientModel.LastUpdatedBy = Context.ConnectionId; 
      Clients.AllExcept(clientModel.LastUpdatedBy).updateShape(clientModel); 
     } 
    } 

수정 Global.cs :

protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 

      RegisterGlobalFilters(GlobalFilters.Filters); 
      RegisterRoutes(RouteTable.Routes); 
      RouteTable.Routes.MapHubs(); 
     } 

뷰에서 : 나는 다음과 같은 오류가

var moveShapeHub = $.connection.moveShapeHub, 
     $shape = $("#shape"), 

      shapeModel = { 
       left: 0, 
       top: 0 
      }; 

     moveShapeHub.client.updateShape = function (model) { 
      shapeModel = model; 
      $shape.css({ left: model.left, top: model.top }); 
     }; 

     $.connection.hub.start().done(function() { 
      $shape.draggable({ 
       drag: function() { 
        shapeModel = $shape.offset(); 
        moveShapeHub.server.updateModel(shapeModel); 
       } 
      }); 

: 재산 '클라이언트'를 가져올 수 없습니다 나는 모델을 만든 미정 도리 또는 null 참조의

내가 뭘 잘못하고 있는지 알기. 당신의 제안에 감사드립니다.

moveShapeHub.on('updateShape', function(model) { 
     shapeModel = model; 
     $shape.css({ left: model.left, top: model.top }); 
    }); 
:

답변

0

같습니다 :

<script src='/signalr/hubs'></script> 

그 코드가 signalr JS 라이브러리의 사용자를 포함 후에 포함되어 있는지 확인합니다.

여전히 스크립트 태그를 올바르게 추가하는 경우 서버가 다른 포트에서 호스팅되는 문제를 오해하는 경로가 있습니다.

샘플이 http://localhost:1337에서 실행 중이라고 가정하면 브라우저에서 http://localhost:1337/signalr/hubs으로 이동하여 signalr/hubs 파일을 볼 수 있으며 생성 된 JavaScript가 표시됩니다.

사람들은/signalr/hubs 파일을 포함하지만 자신의 사이트를 http://localhost:1337/bar/에 호스트한다는 공통적 인 문제가 있습니다. 따라서 SignalR은 실제로 http://localhost:1337/bar/signalr/hubs에있는 허브 파일을 http://localhost:1337/signalr/hubs에서로드하려고 시도합니다.

/signalr/hubs가 올바른 위치를 가리키고 있는지 확인하십시오. 나는 보통 :

<script src="<%: ResolveUrl("~/signalr/hubs") %>"></script> 

항상 응용 프로그램 상대 URL을 해결합니다.

다른 경로를 매핑하기 전에 RouteTable.Routes.MapHubs();으로 전화하십시오.

+0

감사합니다. 변경을했으며 마스터보기로 모든 j를 이동해도 같은 오류가 발생합니다. 간단한 VS2010 MVC3 샘플이 있으면 좋겠다. 예제의 대부분은 VS2012에 내장되어있다. – hncl

+0

웹 브라우저에서 http : // localhost : 1337/signalr/hubs의 버전으로 수동으로 이동하면 생성 된 javascript 페이지가 표시됩니까? –

+0

HTTP 오류 400 - 잘못된 요청이 표시됩니다. – hncl

0

당신이 당신의 connection.hub.start 방법의 끝에 .fail(function(){ alert("failed to connect")});을 추가 할 경우 연결이 확인에 연결되어있는 경우, 이후에이 방법을 시도, 볼, 서버와 설립되고 있음을 확인 되세요 당신이 당신의 HTML에 다음 코드를 포함하지 않는 것 같은
+0

감사합니다.이 오류가 있습니다. SignalR : 허브로드 중 오류가 발생했습니다. 허브 참조가 올바른지 확인하십시오 (예 : hncl

+0

JavaScript를 실행하기 전에 jquery, signalr, signalr/hubs 순서로 스크립트에 참조를 추가하십시오. – ianaldo21

+0

고마워요, 그게 정확히 제가 가진 명령입니다. 내가 뭔가 잘못하고있는 것 같아! – hncl