SignalR是微軟ASP.NET技術體系中的新成員。html
在www.asp.net網站上的SignalR專區有一篇SignalR的入門級教程《Tutorial: Server Broadcast with ASP.NET SignalR (C#)》,介紹了經過SignalR實現服務器端廣播的方法。文章中實現了簡單的股票信息實時推送,這是一個服務器-客戶端雙向實時通訊的典型應用。然而我以爲這篇教程雖然簡單,可是做爲入門的話代碼量(特別是無關代碼量)顯得太多了,當時我用此教程學習的時候不得不從幾頁代碼中上下翻找與SignalR的使用有關的關鍵點,體驗不是很好。因而我本身練習時,另外寫了一個簡化版的Hello world,如今放出來跟你們交流。服務器
個人示例很簡單,就是服務器端定時發起更新客戶端頁面上的一個字符串消息。消息內容也沒有花頭,直接在幾個固定內容中輪換。asp.net
服務器端:學習
public class MessagesHub : Hub網站
{spa
static MessagesHub().net
{xml
StringPusher.Init();htm
}blog
}
public static class StringPusher
{
private static string[] _messages = { "這是從服務器推送的消息。", "使用ASP.NET SignalR技術實現。", "今後再也不須要客戶端定時發送請求。", "可實現雙向實時通訊。" };
private static System.Timers.Timer _timer = new System.Timers.Timer(3000);
private static IHubConnectionContext _clients = GlobalHost.ConnectionManager.GetHubContext<MessagesHub>().Clients;
private static int _messageIndex = 0;
public static void Init()
{
_timer.Elapsed += (sender, e) => Broadcast();
_timer.Start();
}
public static void Broadcast()
{
_messageIndex = (_messageIndex + 1) % _messages.Length;
_clients.All.showMessage(_messages[_messageIndex]);
}
}
客戶端:
$(document).ready(function () {
var messagesHub = $.connection.messagesHub;
messagesHub.client.showMessage = function (msg) {
$('#footer').text(msg);
};
$.connection.hub.start();
});