SignalR+Asp.net高频率实时消息传递应用
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高频率实时消息传递应用的更多相关文章
- 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...
- ASP.NET Core的实时库: SignalR -- 预备知识
大纲 本系列会分为2-3篇文章. 第一篇介绍SignalR的预备知识和原理 然后会介绍SignalR和如何在ASP.NET Core里使用SignalR. 本文的目录如下: 实时Web简述 Long ...
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案
C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...
- Asp.net+WebSocket+Emgucv实时人脸识别
上个月在网上看到一个用web实现简单AR效果的文章,然后自己一路折腾,最后折腾出来一个 Asp.net+WebSocket+Emgucv实时人脸识别的东西,网上也有不少相关资料,有用winform的也 ...
- Linux海量数据高并发实时同步架构方案杂谈
不论是Redhat还是CentOS系统,除去从CDN缓存或者数据库优化.动静分离等方面来说,在架构层面上,实 现海量数据高并发实时同步访问概括起来大概可以从以下几个方面去入手,当然NFS的存储也可以是 ...
- bilibili 高并发实时弹幕系统的实现
高并发实时弹幕是一种互动的体验.对于互动来说,考虑最多的地方就是:高稳定性.高可用性以及低延迟这三个方面. 高稳定性,为了保证互动的实时性,所以要求连接状态稳定: 高可用性,相当于提供一种备用方案,比 ...
- 高并发实时弹幕系统 并发数一定是可以进行控制的 每个需要异步处理开启的 Goroutine(Go 协程)都必须预先创建好固定的个数,如果不提前进行控制,那么 Goroutine 就随时存在爆发的可能。
小结: 1.内存优化1.一个消息一定只有一块内存使用 Job 聚合消息,Comet 指针引用. 2.一个用户的内存尽量放到栈上内存创建在对应的用户 Goroutine(Go 程)中. 3.内存由自己控 ...
- 使用SignalR+Asp.net创建实时聊天应用程序
一.概述: 使用 ASP.NET 那么 SignalR 2 创建一个实时聊天应用程序.将 SignalR 添加 MVC 5 应用程序中,并创建聊天视图发送并显示消息. 在Demo中,将学习Signal ...
- ASP.NET Core的实时库: SignalR简介及使用
大纲 本系列会分为2-3篇文章. 第一篇介绍了SignalR的预备知识和原理 本文介绍SignalR以及ASP.NET Core里使用SignalR. 本文的内容: 介绍SignalR 在ASP.NE ...
随机推荐
- drupal7 Views Slideshow 简单教程
一.下载安装(略) 二.内容类型建立(过程略,首页幻灯),字段建立(过程略)主要有2个字段,图片字段 和 指向链接字段 三.view 1.建立一个新的view,名称为frontbanner 显示为内容 ...
- TypeError: Cannot read property 'root' of null
解决办法: brew upgrade watchman
- Mac系统下,在android studio中使用Github版本管理
1.下载并安装github客户端http://git-scm.com/download/ 2.打开android studio,测试github是否使用ok 点击"test",如果 ...
- html5网页动画总结--jQuery旋转插件jqueryrotate
CSS3 提供了多种变形效果,比如矩阵变形.位移.缩放.旋转和倾斜等等,让页面更加生动活泼有趣,不再一动不动.然后 IE10 以下版本的浏览器不支持 CSS3 变形,虽然 IE 有私有属性滤镜(fil ...
- [PaPaPa][需求说明书][V0.3]
PaPaPa软件需求说明书V0.3 前 言 不好意思,本文是没有前言的. 别说是前言了,其实关于界面的内容我也是不打算写!! 因为我知道你们想要的界面是这样的: 再不济也应该是这样的: 但是我 ...
- 转战farbox
好久没更新博客了,感觉在博客园这种技术为主的博客里面写太多东西写得太杂了,平时的阅读体验非常糟糕,我一直都是一个喜欢记录的人,以前经常有在笔记本上写日记的习惯,但是自从用了网上博客之后,好像就再也没有 ...
- The file 'MemoryStream' is corrupted! 的解决办法
The file 'MemoryStream' is corrupted! Remove it and launch unity again! [Position > ] 有时候我们会遇到这个报 ...
- 同时使用Twitter nlp 和stanford parser的解决方法
因为Twitter nlp中使用了较老版本的stanford parser,导致不能同时使用 解决方法是使用未集成其它jar包的Twitter nlp,关于这点Stanford FAQ中也有说明(在F ...
- angularjs + seajs构建Web Form前端(二)
回顾 上一篇讲解了引入bootstrap构建一个简单的登录页面,如何让angularjs自动启动并绑定视图,操作过程当中如何使用ui-bootstrap,继而完成简单功能后如何引入seajs后如何使n ...
- angularjs + seajs构建Web Form前端(一)
简介 Bootstrap是Twitter推出的一个用于前端开发的开源工具包,它由Twitter的设计师Mark Otto和Jacob Thornton合作开,是一个CSS/HTML框架. Angula ...