SignalR的简单实现
1创建mvc的空项目
2添加文件夹Counters放在里面的类用于封装性能计数器
3创建PerfCounterWrapper类用于封装性能计数器的实体
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web; namespace SignalR.Counters
{
public class PerfCounterWrapper
{
public PerfCounterWrapper(string name, string category, string counter, string instance = "")
{
_counter = new PerformanceCounter(category, counter, instance, readOnly: true);
this.Name = name;
}
public string Name { get; set; } PerformanceCounter _counter; public float Value
{
get
{
return _counter.NextValue();
}
}
}
}
注:通过nuget导入Diagnostics类库
4封装性能计数器的业务逻辑
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace SignalR.Counters
{
public class PerfCounterService
{
List<PerfCounterWrapper> _counters; public PerfCounterService()
{
this._counters = new List<PerfCounterWrapper>();
_counters.Add(new PerfCounterWrapper("Processor", "Processor", "% Processor Time", "_Total"));
_counters.Add(new PerfCounterWrapper("Paging", "Memory", "Pages/sec"));
_counters.Add(new PerfCounterWrapper("Disk", "PhysicalDisk", "% Disk Time", "_Total"));
} public dynamic GetResults()
{
return _counters.Select(c => new { name = c.Name, value = c.Value }
);
} }
}
5创建我们的工作目录-hubs并添加一个hub
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using SignalR.Counters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web; namespace SignalR.Hubs
{
//指定该hub的名字,用于在前台中创建使用
[HubName("PerfHub")]
public class PerfHub : Hub
{
public PerfHub()
{
StartCounterCollection();
} private void StartCounterCollection()
{
Task.Factory.StartNew(async () =>
{
var perfService = new PerfCounterService();
while (true)
{
var results = perfService.GetResults();
Clients.All.newCounters(results);
await Task.Delay();
}
}, TaskCreationOptions.LongRunning);
}
//发送信息
public void Send(string name, string message)
{
Clients.All.addSomeMessage(name, message);
}
}
}
页面的内容
@model dynamic
@{
ViewBag.Title = "Index";
} <h2>Index</h2> <div class="container">
<input type="text" id="message" />
<input type="button" id="sendmessage" value="Send" />
<input type="hidden" id="displayname" />
<ul id="discussion">
</ul>
</div> <script src="~/Scripts/jquery-1.6.4.js"></script> <script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
<script type="text/javascript" src="~/signalr/hubs"></script> <script>
$(function () { // 链接hub
var chat = $.connection.PerfHub;
$.connection.hub.logging = true; $.connection.hub.start();
// 执行返回数据 perfhub中的Send中调用的方法签名一致
chat.client.addSomeMessage = function (name, message) {
// 将发送的内容显示在页面
$('#discussion').append('<li><strong>' + htmlEncode(name)
+ '</strong>: ' + htmlEncode(message) + '</li>');
};
// 弹出输入名字的文本框
$('#displayname').val(prompt('Enter your name:', ''));
// Set initial focus to message input box.
$('#message').focus();
//启动hub的工作 $.connection.hub.start().done(function () { $('#sendmessage').click(function () {
// 发送信息
chat.server.send($('#displayname').val(), $('#message').val());
//清空输入的内容
$('#message').val('').focus();
});
});
}); function writeEvent(eventLog, logClass) {
var now = new Date();
var nowStr = now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds();
$('#discussion').prepend('<li class="' + logClass + '"><b>' + nowStr + '</b> ' + eventLog + '.</li>');
}
// This optional function html-encodes messages for display in the page.
function htmlEncode(value) {
var encodedValue = $('<div />').text(value).html();
return encodedValue;
}
</script>
SignalR的简单实现的更多相关文章
- [SignalR]一个简单的聊天室
原文:[SignalR]一个简单的聊天室 1.说明 开发环境:Microsoft Visual Studio 2010 以及需要安装NuGet. 2.添加SignalR所需要的类库以及脚本文件: 3. ...
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 异常汇总:http://www ...
- SignalR的简单实现消息广播
之前由于一个项目的需要(简单说一下,一个网页游戏,裁判的页面点击开始按钮,玩家便可以开始游戏),研究了很久,最终一个同事跟我推荐了SignalR.距离项目结束已经有一段时间了,再来回顾一下Signal ...
- SignalR的简单实现(一)
原文:SignalR的简单实现(一) ASP.NET SignalR是ASP.NET开发人员的一个新库,它使您的应用程序添加实时Web功能变得非常简单.什么是"实时网络"功能?能够 ...
- SignalR的简单使用(二)
原文:SignalR的简单使用(二) 之前提到SignalR代理在网页,通过生成的Js来完成相关的功能.但我不禁想一个问题, 难到SignalR的服务端就能寄存在web端吗,通过访问网页能方式才能启动 ...
- SignalR + MVC5 简单示例
本文和前一篇文章很类似,只不过是把 SignalR 应用在了 MVC 中 新建项目,选择 MVC 模板 安装 SignalR Install-Package Microsoft.AspNet.Sign ...
- SignalR 前期简单配置
一.随便你在哪个命名空间下新建一个Startup类,并在在该类中注册SignalR. using Owin; using System; using System.Collections.Generi ...
- SignalR简单示例教程入门版
上周五最后一天在公司上班,无聊之余就想做点什么.介于之前有人让我做个简易版的在线聊天的,于是乎就打算花一天时间来弄下关于SignalR的简单教程制作一个在线的聊天的. 1:前端用了国产的一个MVVM框 ...
- SignalR循序渐进(一)简单的聊天程序
前阵子把玩了一下SignalR,起初以为只是个real-time的web通讯组件.研究了几天后发现,这玩意简直屌炸天,它完全就是个.net的双向异步通讯框架,用它能做很多不可思议的东西.它基于Owin ...
随机推荐
- 深入浅出谈存储:如何区别NAS、SAN与DAS
深入浅出谈存储:如何区别NAS.SAN与DAS 2012年02月17日16:51 来源:新浪博客 作者:林沛满 编辑:曾智强 查看全文 赞(0)评论(1) 分享 标签: DAS , SAN , 存储系 ...
- c#与vb.net在App_Code里面编译要通过,需要以下web.config的配置
web.config的配置: <system.web> <codeSubDirectories> <add directoryName="VB"/&g ...
- LightOJ 1259 Goldbach`s Conjecture (哥德巴赫猜想 + 素数筛选法)
http://lightoj.com/volume_showproblem.php?problem=1259 题目大意:给你一个数n,这个数能分成两个素数a.b,n = a + b且a<=b,问 ...
- QListWidgetItem带上颜色的问题
new_item = QListWidgetItem(_fromUtf8(item_content), self.listWidget) 首先创建一个QListWidgetItem,第一个参数内容是I ...
- POJ 2774 Long Long Message (后缀数组模板)
借用罗大神的模板,开始搞后缀数组 #include <cstdio> #include <iostream> #include <cstring> #include ...
- typedef block
给同一种类型的block定义一个别名 typedef int (^MyBlock) (int , int); int main(int argc, const char * argv[]) { @au ...
- LEARUN 开发框架 /aspnetboilerplate ----上海力软信息技术有限公司
LEARUN 开发框架 ----上海力软信息技术有限公司 http://www.learun.cn/ aspnetboilerplate http://www.aspnetboilerplate ...
- (C#)使用队列(Queue)解决简单的并发问题
(C#)使用队列(Queue)解决简单的并发问题 2015-07-16 13:04 13265人阅读 评论(8) 收藏 举报 分类: Asp.Net(8) 版权声明:本文为博主原创文章,未经博主允 ...
- Winfrom子窗体刷新父窗体
本人比较懒,直接从网上转载了一篇比较合适的文章,只是文章格式有点乱,地址是 http://aspnet.blog.163.com/blog/static/17515510920121126104433 ...
- eclipse设置默认编码格式为UTF-8
需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window ...