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();
});