我想在ASP.NET MVC 3中實現一個類似facebook的通知系統:通知被髮送給特定用戶,通知他對他的某個項目的操作。使用Signalr有一個類似facebook的通知系統
信號器是否適合這種要求? 如何使用SignalR向特定用戶(此用戶的所有打開的會話)發送通知?
編輯
好了,在這裏我做了什麼
在客戶端
$(function() {
// Proxy created on the fly
var chat = $.connection.chat;
var username = '@Html.ViewContext.HttpContext.User.Identity.Name';
// Declare a function on the chat hub so the server can invoke it
chat.addMessage = function (message) {
$('#messages').append('<li>' + message + '</li>');
};
// Start the connection
$.connection.hub.start(function(){
chat.join(username);
});
});
在服務器端
public class Chat : Hub
{
public void Join(string username)
{
AddToGroup(username);
}
}
我每次需要通知用戶在控制器中,我執行以下操作:
IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
dynamic clients = connectionManager.GetClients<Chat>();
clients[username].addMessage("test");
thx亞當,你認爲我的帖子結束後發佈的解決方案好嗎? Thx – hichn 2012-03-01 15:10:59
您的控制器應將IConnectionManager作爲注入的依賴項放入其控制器中。除了控制器工廠外,您不應該在其他任何地方調用Resolve()。使用一些DI容器(例如統一 - unity.mvc3 nuget包)並使用構造器注入來注入你的控制器。確保在IConnectionManager的具體實現中有Dispose方法,當通過使用HierarchicalLifetimeManager完成時告訴單元處理它。設置一個斷點來確保dispose被調用(只有當你正在實現IDisposable時) – 2012-03-01 15:59:50