2016-02-09 178 views
2

我正在學習SignalR,它非常簡單。但是,我在將消息從服​​務器發送到客戶端時遇到問題。從SignalR 2.0發送消息到客戶端SignalR 2.0

我的HUB類如下:

public class UpdateHub : Hub 
{ 
    private readonly UpdateBroadcast _broadcaster; 

    public UpdateHub() : this(UpdateBroadcast.Instance) { } 

    public UpdateHub(UpdateBroadcast broadCaster) 
    { 
     _broadcaster = broadCaster; 
    } 
} 

我打電話來這個樞紐在我的廣播類是這樣的:

public class UpdateBroadcast 
{ 
    private readonly static Lazy<UpdateBroadcast> _instance = new Lazy<UpdateBroadcast>(
    () => new UpdateBroadcast(GlobalHost.ConnectionManager.GetHubContext<UpdateHub>())); 

    private IHubContext _context; 

    private UpdateBroadcast(IHubContext context) 
    { 
     _context = context; 
    } 

    public static UpdateBroadcast Instance 
    { 
     get { return _instance.Value; } 
    } 

    public void UpdatePost(Post post) 
    { 
     _context.Clients.All.updatePost(post); 
    } 

} 

在我的MVC控制器我打電話的UpdatePost方法:

public JsonResult AddPost(Post post) 
{ 
    UpdateBroadcast broadcaster = UpdateBroadcast.Instance; 
    Post result = dbFunctions.AddPost(post); 
    broadcaster.UpdatePost(post); 
    return Json(new { success = result != null }, JsonRequestBehavior.DenyGet); 
} 

當我調試代碼時,我可以看到UpdatePost被執行但沒有任何活動在客戶端。我的客戶端功能是這樣的:

$(function() {  
    var update = $.connection.updateHub; 
    update.client.updatePost = function (data) { 
     alert("called update post"); 
    }; 
}); 

我似乎不明白是什麼造成了這種情況。

+0

有你加入signalR JavaScript的鏈接,客戶端? –

+0

是的,我有,並沒有在客戶端的錯誤,我檢查控制檯。 – progrAmmar

+0

你跟着哪個教程? –

回答