Используйте Signalr, чтобы иметь систему уведомлений, похожую на Facebook - PullRequest
11 голосов
/ 27 февраля 2012

Я хочу внедрить систему уведомлений, подобную Facebook, в ASP.NET MVC 3: уведомления отправляются конкретному пользователю, чтобы уведомить его о действии над одним из его элементов.

Подходит ли для этого сигнализатор? Как я могу отправить уведомление конкретному пользователю (все открытые сеансы этого пользователя) с помощью 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");

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Да, SignalR - хороший выбор для этого.Ознакомьтесь с документацией по концентраторам ( сервер и JS-клиент ).

Вам необходимо реализовать логику сервера, чтобы связать сеанс вашего клиента с сеансом SignalR.Вы можете использовать группы для уведомления обо всех открытых сессиях каждого пользователя.

2 голосов
/ 28 февраля 2012

Это подходит для этого или вы используете опрос, это два варианта.

Вот новое видео с сегодняшнего дня на этом:

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

...