SignalR是微软ASP.NET技术体系中的新成员。

www.asp.net网站上的SignalR专区有一篇SignalR的入门级教程《Tutorial: Server Broadcast with ASP.NET SignalR (C#)》,介绍了通过SignalR实现服务器端广播的方法。文章中实现了简单的股票信息实时推送,这是一个服务器-客户端双向实时通信的典型应用。然而我觉得这篇教程虽然简单,但是作为入门的话代码量(特别是无关代码量)显得太多了,当时我用此教程学习的时候不得不从几页代码中上下翻找与SignalR的使用有关的关键点,体验不是很好。于是我自己练习时,另外写了一个简化版的Hello world,现在放出来跟大家交流。

我的示例很简单,就是服务器端定时发起更新客户端页面上的一个字符串消息。消息内容也没有花头,直接在几个固定内容中轮换。

服务器端:

public class MessagesHub : Hub

{

static MessagesHub()

{

StringPusher.Init();

}

}

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

});

比官方教程代码更简短的SignalR Server Broadcast示例的更多相关文章

  1. apk反编译(6)ProGuard 工具 android studio版官方教程[作用,配置,解混淆,优化示例]

    ProGuard In this document Enabling ProGuard (Gradle Builds) Configuring ProGuard Examples Decoding O ...

  2. ContentProvider官方教程(5)ContentResolver插入、更新、删除 示例

    Inserting, Updating, and Deleting Data In the same way that you retrieve data from a provider, you a ...

  3. 【caffe】Caffe的Python接口-官方教程-01-learning-Lenet-详细说明(含代码)

    01-learning-Lenet, 主要讲的是 如何用python写一个Lenet,以及用来对手写体数据进行分类(Mnist).从此教程可以知道如何用python写prototxt,知道如何单步训练 ...

  4. 【caffe】Caffe的Python接口-官方教程-00-classification-详细说明(含代码)

    00-classification 主要讲的是如何利用caffenet(与Alex-net稍稍不同的模型)对一张图片进行分类(基于imagenet的1000个类别) 先说说教程到底在哪(反正我是找了半 ...

  5. Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译

    本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...

  6. Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译

    本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...

  7. Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译

    本文是Unity官方教程,性能优化系列的第二篇<Diagnosing performance problems using the Profiler window>的简单翻译. 相关文章: ...

  8. Google Guava官方教程(中文版)

    Google Guava官方教程(中文版) 原文链接  译文链接 译者: 沈义扬,罗立树,何一昕,武祖  校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库, ...

  9. [苏飞开发助手V1.0测试版]官方教程与升级报告

           [苏飞开发助手V1.0测试版]官方教程与升级报告导读部分----------------------------------------------------------------- ...

随机推荐

  1. 传参数应该用哪种形式——值、引用、指针?

    类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.c ...

  2. 一场IT民工 与 人贩子 之间的战争 - 感受来自PostgreSQL的爱

    标签 PostgreSQL , 图数据库 , 社会关系分析 , 流式分析 , 人贩子 , 图像识别 , 人脸识别 , 公安刑侦 , pipelinedb , stream , neo4j , plpr ...

  3. html 超文本标记语言

    1.html超文本标记语言 2.在html中存在着大量的标签,我们用html中存在的标签将要显示在网页的内容包含起来. 3.css 控制网页显示内容的效果. 4.html+css 只能是静态网页. 5 ...

  4. Android Handler消息传递机制

    在Android系统中,类Handler主要有如下两个作用. 在新启动的线程中发送消息. 在主线程中获取.处理消息. 类Handler在实现上述作用时,首先在新启动的线程中发送消息,然后在主线程中获取 ...

  5. UVA - 11604 General Sultan 题解

    题目大意: 有若干模式串,将某些模式串拼接起来(一个可以使用多次)形成一个长模式串,判断能否有两种或更多种不同的拼法拼成相同的模式串. 思路: 神奇的构图,暴力的求解. 可以发现,若有不同的拼法,则一 ...

  6. Leetcode Valid Anagram

    Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...

  7. Visual Studio 2013执行项目报错:HTTP 错误 500.22

    转至:http://www.codingwhy.com/410.html 具体报错 HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ...

  8. bzoj3673可持久化线段树实现可持久化数组实现可持久化并查集(好长)

    线段树只用叶子节点感觉莫名浪费,,, 感觉真好写(刚从未来程序逃回来的人) #include <cstdio> #define mid ((l+r)>>1) ,ca,x,y; ...

  9. 【BZOJ】3996: [TJOI2015]线性代数

    题意 给出一个\(N \times N\)的矩阵\(B\)和一个\(1 \times N\)的矩阵\(C\).求出一个\(1 \times N\)的01矩阵\(A\),使得\[ D = ( A * B ...

  10. CSS Tip

    硬件加速 CSS will-change 属性