原文:SignalR的简单实现(一)

ASP.NET SignalR是ASP.NET开发人员的一个新库,它使您的应用程序添加实时Web功能变得非常简单。什么是“实时网络”功能?能够实时地将服务器端代码推送到连接的客户端的能力。

您可能已经听说过WebSockets,一种新的HTML5 API,可以实现浏览器和服务器之间的双向通信。SignalR将在可用的封面下使用WebSockets,如果不是,您的应用程序代码保持不变,则可以正常地回退到其他技术和技术。

SignalR还提供了一个非常简单的高级API,用于在ASP.NET应用程序中执行服务器到客户端RPC(在客户端的浏览器中从服务器端.NET代码调用JavaScript函数),以及为连接管理添加有用的钩子,例如连接/断开事件,分组连接,授权。

---来自SignalR的官方说明

根据SignalR的官网教程,做一些简单的解析。

1.想要使用SignalR要引入它的组建,Microsoft.AspNet.SignalR。

在你的web项目中,应用NuGet包工具引入。怎么引入包可以到NuGet的官网看教程。

2.新建一个SignalR集线器类,这样就会得到一个集成自Hub的类,

可以通过打标签的方式改变集线器的名字,这在客户端代码会用到。

方式是[HubName("myHub")],命名空间是在Microsoft.AspNet.SignalR.Hubs下。

3.引入一个配置类,这里用的是Startup,可以通过OWIN Startup类获得。

代码如下:

using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR();
}
}
}

  这个类现在的作用就是配置。其中app.MapSignalR();就是配置所有的集线器。

其中IAppBuilder在Owin命名空间,OwinStartup在Microsoft.Owin命名空间。

4.客户端(这里使用的是网页的客户端,是用js代理的)

引入SIgnalR组件的时候,会生成一个Scripts文件,里面包含JQuery和signaR的js文件。

在做网页前可以先测试signalR是否配置成功,通过 项目地址/signalr/hubs如能打开,

显示文件就证明配置成功了。文件里说明了代理的js‘类’;

在客户端按顺序引入JQuery、signalr。最后引入<script src="/signalr/hubs"></script>

这样一个文件,因为它是动态生成的,所以看不见,这个就是之前测试所在的文件集;

接下来就可以写js代码了:

var proxy=$.connection.chatName;其中chatName是你集线器的名称。这样就拿到了hub代理成员。

这里我测试的是hub的名字首字母是小写的,大写的会找不到,具体的可以通过"/signalr/hubs"这个路径找。

proxy.client.addMessage(function(){

alert("对了");

});

//这里是注册客户端的方法,让服务端调用,也就是之前新建的hub。

$.connection.hub.start().done(function(){

$("#btn").click(function(){

proxy.server.hello();

});

});

//start是开启连接,done是开启连接成功后的回调函数

//在这个回调函数中调用了服务端hello方法。

其中服务段方法为

public void Hello()
{
Clients.All.addMessage(); }

  在服务端又调用了客户端的方法,addMessage就是注册在服务端的方法。

$.connection 拿到建立的这个连接。
$.connection.hubName 拿到连接里对应的hub对象
$.connection.hubName.client 拿到客服端对象。
$.connection.hubName.server 拿到服务端对象。

SignalR的简单实现(一)的更多相关文章

  1. [SignalR]一个简单的聊天室

    原文:[SignalR]一个简单的聊天室 1.说明 开发环境:Microsoft Visual Studio 2010 以及需要安装NuGet. 2.添加SignalR所需要的类库以及脚本文件: 3. ...

  2. 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 ...

  3. SignalR的简单实现消息广播

    之前由于一个项目的需要(简单说一下,一个网页游戏,裁判的页面点击开始按钮,玩家便可以开始游戏),研究了很久,最终一个同事跟我推荐了SignalR.距离项目结束已经有一段时间了,再来回顾一下Signal ...

  4. SignalR的简单使用(二)

    原文:SignalR的简单使用(二) 之前提到SignalR代理在网页,通过生成的Js来完成相关的功能.但我不禁想一个问题, 难到SignalR的服务端就能寄存在web端吗,通过访问网页能方式才能启动 ...

  5. SignalR + MVC5 简单示例

    本文和前一篇文章很类似,只不过是把 SignalR 应用在了 MVC 中 新建项目,选择 MVC 模板 安装 SignalR Install-Package Microsoft.AspNet.Sign ...

  6. SignalR的简单实现

    1创建mvc的空项目 2添加文件夹Counters放在里面的类用于封装性能计数器 3创建PerfCounterWrapper类用于封装性能计数器的实体 using System; using Syst ...

  7. SignalR 前期简单配置

    一.随便你在哪个命名空间下新建一个Startup类,并在在该类中注册SignalR. using Owin; using System; using System.Collections.Generi ...

  8. SignalR简单示例教程入门版

    上周五最后一天在公司上班,无聊之余就想做点什么.介于之前有人让我做个简易版的在线聊天的,于是乎就打算花一天时间来弄下关于SignalR的简单教程制作一个在线的聊天的. 1:前端用了国产的一个MVVM框 ...

  9. SignalR循序渐进(一)简单的聊天程序

    前阵子把玩了一下SignalR,起初以为只是个real-time的web通讯组件.研究了几天后发现,这玩意简直屌炸天,它完全就是个.net的双向异步通讯框架,用它能做很多不可思议的东西.它基于Owin ...

随机推荐

  1. RoundingMode 几个参数详解

    第一版 java.math.RoundingMode 几个参数详解 java.math.RoundingMode里面有几个参数搞得我有点晕,现以个人理解对其一一进行总结: 为了能更好理解,我们可以画一 ...

  2. js实现去文本换行符小工具

    js实现去文本换行符小工具 一.总结 一句话总结: 1.vertical属性使用的时候注意看清定义,也注意父元素的基准线问题.vertical-align:top; 2.获取textareaEleme ...

  3. 【codeforces 791A】Bear and Big Brother

    [题目链接]:http://codeforces.com/contest/791/problem/A [题意] 给你两个数字a和b; a每次乘3,b每次乘2 问你什么时候a第一次大于b [题解] 傻逼 ...

  4. scala 中的修饰符

    package cn.scala_base.oop.scalaclass import scala.beans.BeanProperty; /** * scala中的field,类中定义的是方法,函数 ...

  5. 在navicat上设置定时计划执行存储过程

    原文 应用情景: 有一个存储过程,需要每天定时执行一次.所以在navicat上使用事件处理,当然还有其他的方法,这只是一种.作为参考 1.事件定义填写 2.事件计划设置 3.保存 点击上方保存即可 常 ...

  6. 静态资源命名的注意点以及document.write与innerHTML的区别

    今天拿出了去年刚开始学前端的那本书来看,发现好多新东西. 使用下划线和混合大小写不利于SEO! document.write与innerHTML的区别 这个问题大概是初学前端的人才会问的吧,业务代码中 ...

  7. Arcgis api for javascript学习笔记 - 不改变默认端口(6080)情况下,外网访问Arcgis Server 发布的接口

    Arcgis Server发布的地图服务地址默认端口号是6080,假设本机上只对80端口做了外网映射,在IIS中部署了一个网站绑定了80端口,那么网站中某个页面通过arcgis api for js ...

  8. IComparable与排序

    IComparable:一种特定于类型的通用比较方法,值类型或类通过实现此方法对特认定进行排序. IComparable的作用是提供了一种比较两个对象的特定类型的方法.这是必需的如果您想要为对象提供任 ...

  9. Computer system with dual operating modes

    A system switches between non-secure and secure modes by making processes, applications, and data fo ...

  10. 高科技 stuff

    热成像摄像机 收集特定频率的电磁波: 蓝色:温度较低:红色:温度较高