Utilisez SignalR pour avoir un système de notification de Facebook
-
13-11-2019 - |
Question
Je souhaite implémenter un système de notification Facebook comme ASP.NET MVC 3: les notifications sont envoyées à un utilisateur spécifique pour le notifier pour une action sur l'un de ses éléments.
SignalR est-il adapté à une telle exigence? Comment pourrais-je envoyer une notification à un utilisateur spécifique (toutes les sessions ouvertes de cet utilisateur) en utilisant SignalR?
Éditer
Ok, ici ce que j'ai fait
Du côté client
$(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);
});
});
Du côté du serveur
public class Chat : Hub
{
public void Join(string username)
{
AddToGroup(username);
}
}
Et chaque fois que je dois informer un utilisateur dans le contrôleur, je fais ce qui suit:
IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
dynamic clients = connectionManager.GetClients<Chat>();
clients[username].addMessage("test");
La solution
Il convient à cela ou vous utilisez des sondages, ce sont les deux choix.
Voici une toute nouvelle vidéo à partir d'aujourd'hui à ce sujet:
Autres conseils
Oui, SignalR est un bon choix pour cela. Jetez un œil à la documentation concernant les hubs (serveur et Client JS).
Vous devez implémenter la logique du serveur pour associer la session de votre client à la session de Signalr. Vous pouvez utiliser des groupes pour informer toutes les sessions ouvertes de chaque utilisateur.