1.概述:

使用 ASP.NET 和SignalR 2高频率的实时消息功能。高频率消息在这种情况下就意味着更新发送以固定的速率;

本教程中创建的应用程序显示一个用户可以拖动的形状。在所有其他连接浏览器形状的位置然后将更新以匹配拖动形状使用定时的更新的位置。在拖动过程中是一个高频率的实时消息传递。

最后Demo的效果如下:

2.实现:

1>.在 Visual Studio 中创建一个 4.5框架的ASP.NET Web 应用程序。

2>.在新的 ASP.NET 项目窗口中,保留空选定,然后单击创建项目。

3>.在解决方案资源管理器中,右键单击项目,选择添加|那么 SignalR 集线器类 (v2).

也可以向项目添加那么 SignalR 通过单击工具 |库包管理器 |程序包管理器控制台和运行命令.

install-package Microsoft.AspNet.SignalR.
4>.单击工具|库包管理器 |程序包管理器控制台。在软件包管理器窗口中,运行以下命令 :

Install-Package jQuery.UI.Combined
这将安装 jQuery UI 库,您将使用对形状进行动画处理。

5>.安装完成之后查看解决方法:多出了Scripts和Content,表面安装成功。

6>.添加MoveShapeHub类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Newtonsoft.Json;

namespace MoveShapeDemo
{
    public class MoveShapeHub : Hub
    {
        public void UpdateModel(ShapeModel clientModel)
        {
            clientModel.LastUpdatedBy = Context.ConnectionId;
            //更新位置
            Clients.AllExcept(clientModel.LastUpdatedBy).updateShape(clientModel);
        }
    }
    /// <summary>
    /// 同步客户端和服务器模型
    /// </summary>
    public class ShapeModel
    {
        //给客户端返回left属性
        [JsonProperty("left")]
        public double Left { get; set; }

        //给客户端返回top属性
        [JsonProperty("top")]
        public double Top { get; set; }

        //不给客户端返回LastUpdatedBy属性
        [JsonIgnore]
        public string LastUpdatedBy { get; set; }
    }
}

7>.添加Startup类。

using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(MoveShapeDemo.Startup))]
namespace MoveShapeDemo
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            //任何连接或集线器连接和配置会去这里
            app.MapSignalR();
        }
    }
}

8.>添加客户端:

 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <title>SignalR MoveShape Demo</title>
 </head>
 <body>
     <script src="Scripts/jquery-1.6.4.min.js"></script>
     <script src="Scripts/jquery-ui-1.11.4.min.js"></script>
     <script src="Scripts/jquery.signalR-2.2.0.js"></script>
     <script src="/signalr/hubs"></script>
     <script>
         $(function () {
             ///--鸣人
             var moveShapeHub = $.connection.moveShapeHub,//MoveShapeHub.cs 此处开头字母要小写
             $shape = $("#shape"), //移动对象

             messageFrequency = ,
             updateRate =  / messageFrequency,

             shapeModel = {        //移动坐标
                 left: ,
                 top:
             };

             moved = false;

             //接收服务器的脚步信息
             moveShapeHub.client.updateShape = function (model) {
                 shapeModel = model;
                 //改变位置
                 $shape.css({ left: model.left, top: model.top });
                 //$shape.animate(shapeModel, { duration: updateRate, queue: false });
             };
             //开启
             $.connection.hub.start().done(function () {
                 $shape.draggable({
                     drag: function () {
                         shapeModel = $shape.offset();
                         moveShapeHub.server.updateModel(shapeModel);
                     }
                 });
                 setInterval(updateServerModel, updateRate);
             });

             function updateServerModel() {
                 //如果我们有一个新的移动只更新服务器
                 if (moved) {
                     moveShapeHub.server.updateModel(shapeModel);
                     moved = false;
                 }
             }
         });
     </script>
     <div id="shape"><img src="userimg.jpg" style="width:100px;height:200px;" /></div>
 </body>
 </html>

按 f5 键启动该应用程序。复制的页的 URL,并将其粘贴到另一个浏览器窗口。

将形状拖在一个浏览器窗口;另一个浏览器窗口中的形状应移动。在另一个窗口形状的运动不生涩,很平滑。

SignalR+Asp.net高频率实时消息传递应用的更多相关文章

  1. 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

  2. ASP.NET Core的实时库: SignalR -- 预备知识

    大纲 本系列会分为2-3篇文章. 第一篇介绍SignalR的预备知识和原理 然后会介绍SignalR和如何在ASP.NET Core里使用SignalR. 本文的目录如下: 实时Web简述 Long ...

  3. C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案

    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...

  4. Asp.net+WebSocket+Emgucv实时人脸识别

    上个月在网上看到一个用web实现简单AR效果的文章,然后自己一路折腾,最后折腾出来一个 Asp.net+WebSocket+Emgucv实时人脸识别的东西,网上也有不少相关资料,有用winform的也 ...

  5. Linux海量数据高并发实时同步架构方案杂谈

    不论是Redhat还是CentOS系统,除去从CDN缓存或者数据库优化.动静分离等方面来说,在架构层面上,实 现海量数据高并发实时同步访问概括起来大概可以从以下几个方面去入手,当然NFS的存储也可以是 ...

  6. bilibili 高并发实时弹幕系统的实现

    高并发实时弹幕是一种互动的体验.对于互动来说,考虑最多的地方就是:高稳定性.高可用性以及低延迟这三个方面. 高稳定性,为了保证互动的实时性,所以要求连接状态稳定: 高可用性,相当于提供一种备用方案,比 ...

  7. 高并发实时弹幕系统 并发数一定是可以进行控制的 每个需要异步处理开启的 Goroutine(Go 协程)都必须预先创建好固定的个数,如果不提前进行控制,那么 Goroutine 就随时存在爆发的可能。

    小结: 1.内存优化1.一个消息一定只有一块内存使用 Job 聚合消息,Comet 指针引用. 2.一个用户的内存尽量放到栈上内存创建在对应的用户 Goroutine(Go 程)中. 3.内存由自己控 ...

  8. 使用SignalR+Asp.net创建实时聊天应用程序

    一.概述: 使用 ASP.NET 那么 SignalR 2 创建一个实时聊天应用程序.将 SignalR 添加 MVC 5 应用程序中,并创建聊天视图发送并显示消息. 在Demo中,将学习Signal ...

  9. ASP.NET Core的实时库: SignalR简介及使用

    大纲 本系列会分为2-3篇文章. 第一篇介绍了SignalR的预备知识和原理 本文介绍SignalR以及ASP.NET Core里使用SignalR. 本文的内容: 介绍SignalR 在ASP.NE ...

随机推荐

  1. Swift 关键字汇总

    常见的关键字有以下4种 与声明有关的关键字:class.deinit.enum.extension.func.import.init.let.protocol.static.struct.subscr ...

  2. 通过微信查找SAP TCODE代码

    输入T-CODE查询作用: (包含了16000+ 个SAP T-CODE),扫码关注后可以体验效果 再也不用去记那么多T-CODE用途了 还不试试看 输入关键词:"利润中心" &q ...

  3. HTTP协议学习

    面试过程中又一个常见的问题,http协议,因为做服务器开发如果用http协议的话,现在各种开源软件都封装好了,python中只需要简单的继承定义好的类,重写get或者post等方法,几行代码就可以搭建 ...

  4. CSS基础(六):浮动深入

    参考了<CSS彻底设计研究>的文章,说的很不错,所以拿来做笔记. 浮动 在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素边界:而在竖直方向和兄弟元素依次排列,不能并排.使用浮 ...

  5. Bulk Insert的用法 .

    /******* 导出到excel */EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:/temp1.xls -c -q -S&quo ...

  6. 二十、【.Net开源】EFW框架核心类库之WebService服务

    回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.1:http://pan.baidu.com/s/1qWJjo3U EFW框架实例源代码下载:http://pan.baid ...

  7. Visual Studio与Eclipse与IntelliJ快捷键对比

  8. 【原创】试用十天被Pass所带来的启示

    试用十天被Pass所带来的启示   招聘是门学问,很多人在研究,也有很多方案,不过面对人员难聘问题,很多方法又不灵了.于是我们采用了降低标准方案,扩招进来一些人员,于是问题又来了,想不想听我亲身经历的 ...

  9. C#基础总结之四List-Hashtable-冒泡排序

    #region 第四天作业 名片--------ArrayList //ArrayList card = new ArrayList(); //card.Add("2202111001122 ...

  10. actionbar部分设置:colorPrimary colorPrimaryDark colorAccent 下部阴影

    去除actionbar下阴影: <item name="android:windowContentOverlay">@null</item>