vendredi 20 septembre 2013

SignalR : Le Web en temps réel

SignalR

En ASP.NET, si on veut une mise à jour de la page on doit rafraichir l'affichage, pour voir les nouvelles données. Évidemment, nous pouvons par "gymnastique" dynamiser le rendu pour produire un affichage en temps réel.


SignalR est un API librement distribué, qui persiste la connexion entre le client et le serveur. Avec cette librairie, le serveur est en mesure d'appeler des fonctions Javascript dans le fureteur du client (Remote procedure calls-RPC) de façon asynchrone. Ceci diffère du fonctionnement habituel du protocole HTTP classique qui est basé sur un modèle de "requête-réponse" où le serveur doit attendre que le client demande l'information pour lui envoyer.

SignalR permet de créer des applications de "chat", l'affichage de résultat sportif en temps réel, des jeux, l'affichage de données en continu. Il est en mesure d'utiliser plusieurs types de protocoles de transport et d'utiliser le plus efficace, selon le fureteur du client. Sa préférence est de communiquer par HTML5 mais si ce n'est pas possible il tentera d'utiliser d'autre processus moins efficace mais adapté au fureteur.

Voici un exemple de "Chat" en quelque ligne seulement :

Fichier HTML Client:
var chat = $.connection.chat;
chat.name = prompt("What's your name?", "");

chat.receive = function(name, message)
{
    $("#messages").append(name + ": " + message);
}

$("#send-button").click(function()
{
    chat.distribute($("#text-input").val());
});

Fichier Serveur:
public class Chat : Hub
{
    public void Distribute(string message)
    {
        Clients.receive(Caller.name, message);
    }
}


Microsoft a incorporé SignalR dans Visual Studio 2012 et la plateforme .Net 4.0+. Voilà une solution alternative à Node.JS intéressante.