2014-04-09 6 views
1

분명히 뭔가를 망쳐 놓고 있습니다.하지만 문서를 제대로 읽은 것 같아서 통찰력이 필요합니다.SignalR이 올바르게 설정되지 않았습니까?

간단한 ASP.NET MVC5 응용 프로그램을 만들었으며 파일 상태에 대한 비동기 알림을 테스트하고 있습니다. 개념의 증거로 I : NuGet에서 SignalR을 설치

  • 추가 내 레이아웃 페이지
  • 추가 "스크립트"참조에 스크립트 참조 "~/signalr/허브"

나는 새로운과 같이 NotificationHub 만든이 후

public class Notification 
{ 
    public MessageLevels Type { get; set; } 
    public string Message { get; set; } 
    public string Title { get; set; } 
} 
public enum MessageLevels 
{ 
    Success, 
    Info, 
    Notice, 
    Error 
} 
public class NotificationHub : Hub 
{ 
    public void Notify(Notification model) 
    { 
     Clients.Caller.notify(model); 
    } 
} 

을 내 레이아웃에 다음 알림 스크립트를 추가 S 페이지 : 이것을 실행하면

public ActionResult Index() 
    { 
     System.Threading.ThreadPool.QueueUserWorkItem(state => SendNotification()); 
     return View(); 
    } 

    private void SendNotification() 
    { 
     Thread.Sleep(3500); 
     var context = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>(); 

     context.Clients.All 
     .Notify(new Notification 
     { 
      Message = "This is a test.", 
      Title = "Test Message", 
      Type = MessageLevels.Notice 
     }); 
    } 

, 내 웹 브라우저에서 다음 줄을 모니터링하고 있습니다 :

내 컨트롤러에서

$(function() { 
    var messages = $.connection.notificationHub; 
    messages.client.notify = function(model) { 
     $.pnotify({ 
      title: model.title, 
      text: model.message, 
      type: model.type 
     }); 
    }; 
}); 

, 나는 통지를 테스트하기 위해이 같은 뭔가를

$.pnotify({ 

... 그러나 내 중단 점에 도달하지 못했습니다.

누군가 내가 뭘 잘못하고 있다고 제안 할 수 있습니까?

는 UPDATE :

$(function() { 
     var connection = $.hubConnection(); 
     var notificationHubProxy = connection.createHubProxy('notificationHub'); 
     notificationHubProxy.on('notify', function(model) { 
      $.pnotify({ 
       title: model.title, 
       text: model.message, 
       type: model.type 
      }); 
     }); 

     connection.start() 
      .done(function() { console.log('Now connected, connection ID=' + connection.id); }) 
      .fail(function() { console.log('Could not connect'); }); 
    }); 

을 ... 그리고 중단 점은 지금에 도달하고 있습니다 :

는 halter73의 대답은 당,이 내 스크립트를 변경했습니다. 그러나 모든 나의 vars은 undefined로 돌아오고 있습니다 ... 나는 그걸 가지고 놀아야 할 것입니다. 나는 그것이 내 자본화와 관련이 있다고 기대한다.

답변

4

전화 번호는 $.connection.hub.start()입니까? $.connection.notificationHub.client.notify을 정의한 후에 호출됩니까?

연결을 시작하기 전에 클라이언트 notify 콜백을 정의하지 않으면 NotificationHub에 가입하지 않습니다. 이것이 $.pnotify에 대한 호출을 포함하는 notify 콜백이 호출되지 않는 이유 일 수 있습니다.

http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#establishconnection

+0

는 흠 ... 그게 내가보고있는 설명서에서 확실히 다르다. –

관련 문제