11

我想在 ASP.NET MVC 3 中实现一个类似于 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");
4

2 回答 2

3

是的,SignalR 是一个不错的选择。查看有关集线器(服务器JS 客户端)的文档。

您需要实现服务器逻辑以将您的客户端会话与 SignalR 的会话相关联。您可以使用组来通知每个用户的所有打开的会话。

于 2012-02-27T20:38:20.317 回答
2

这是合适的,或者你使用轮询,这是两个选择。

这是今天的全新视频:

http://channel9.msdn.com/Shows/Web+Camps+TV/Damian-Edwards-and-David-Fowler-Demonstrate-SignalR?utm_source=dlvr.it&utm_medium=twitter

于 2012-02-27T20:38:37.990 回答