Dnes vyšla aktualizace knihovny SignalR na verzi 0.5.3. Kompletní přehled novinek najdete na blogu web tools týmu. Kromě odstranění několika chyb bylo přidáno lepší ošetření výjimek a poněkud změněn způsob práce s huby v jQuery klientovi.
Původní způsob zůstává nadále funkční, ale přibyl nový, který je podobnější přístupu v C# klientovi. Tedy místo přímého přidávání metod lze odchytávat metodu "on" a pověsit na ni patřičný event handler. Mně se tento nový přístup líbí více, přijde mi "systematičtější". Je také pro C# programátora jednodušší na naučení, a navíc kód pro klientskou a serverovou stranu je velmi podobný.
Takto v nové verzi vypadá kód v C# klientovi:
// Create SignalR hub
var connection = new HubConnection(BASE_URL);
var proxy = connection.CreateProxy("authChat");
// Handle events
proxy.On("userJoined", (string time, string userName) => {
Console.WriteLine("[{0}] User {1} connected to chat", time, userName);
});
// Connect to server
Console.Write("Starting connection...");
connection.Start().Wait();
Console.WriteLine("OK");
// Authenticate
Console.Write("Authenticating...");
proxy.Invoke("authenticate", authCode).Wait();
Console.WriteLine("OK");
Kód v JavaScriptu je prakticky tentýž:
// Create connection and hub proxy
var connection = $.hubConnection();
var proxy = connection.createProxy("authChat");
// Handle event
proxy.on("userJoined", function (time, userName) {
var html = FormatString("<div><span>[{time}]</span> <i>User {userName} connected to chat.</i></div>", {
time: time,
userName: userName
});
$(".chat").html(html + $(".chat").html());
});
// Connect to service and authenticate
connection.start(function () {
$(".chat").text("Authenticating...");
proxy.invoke("authenticate", authCode);
});
Přepsal jsem poslední příklad ze své přednášky o SignalR do nové syntaxe (a trochu vylepšil command line klienta), takže můžete obě řešení porovnat, nové příklady jsou ke stažení zde.