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 ...
随机推荐
- [WebService]之TCPMon的使用
TCPMon是apache下的一个项目,下载地址:http://ws.apache.org/commons/tcpmon/download.cgi (1)功能: TCPMon可以拦截客户与服务之间的H ...
- Windows Azure 虚拟网络配置(Site to Site)
上篇我们创建了Point to Site的虚拟网络连接,来满足客户端到云端网络的连接.本篇文章我们将创建Site to Site的虚拟网络连接,以满足本地网络到云端的网络连接. 创建与配置过程与上篇较 ...
- 'System.Web.Http.GlobalConfiguration' does not contain a definition for 'Configure'
It needs the system.web.http.webhost which is part of this package. I fixed this by installing the f ...
- dom 表格操作
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Mellanox OFED2.1-X安装记录
---恢复内容开始--- 1,tcl,tk,gcc-gfortran,libnl-devel依赖包
- delphi 2010 导出sql server 数据到DBF乱码问题
近日,由于业务需要导出sql server 数据到DBF文件,要查询多表记录,并适当处理后生成导出DBF文件,系统使用delphi2010平台开发. 首先按要求在VFP里创建DBF表,字段数有240个 ...
- MSDN上面测试Window的方法(很好用)
如何:将 Windows 服务作为控制台应用程序运行 向你运行 OnStart 和 OnStop 方法的服务添加一个方法: internal void TestStartupAndStop(s ...
- WSO2 ESB
什么是WSO2 ESB? WSO2 ESB是一个轻量级的易于使用的企业服务资源总线.WSO2 ESB允许系统管理员和SOA架构师,消息路由,虚拟化,中介,转换,日志记录,任务调度,负载平衡,失败了路由 ...
- java中Arrays类中,binarySearch()方法的返回值问题
最近在复习Java知识,发现果然不经常使用忘得非常快... 看到binarySearch()方法的使用时,发现书上有点错误,于是就自己上机实验了一下,最后总结一下该方法的返回值. 总结:binaryS ...
- HDU 4637 Rain on your Fat brother 线段与半圆和线段交 简单题
题意: 应该不难读懂. 做法: 我们可以把雨滴看做静止不动,然后maze(这题的那个人)就是往左上方运动就可以了,计算出maze能跑到的最远的点,然后就是求起点和终点所构成的线段与每个雨滴交的时间,注 ...