SignalR的简单实现(一)

简介: 原文:SignalR的简单实现(一)   ASP.NET SignalR是ASP.NET开发人员的一个新库,它使您的应用程序添加实时Web功能变得非常简单。什么是“实时网络”功能?能够实时地将服务器端代码推送到连接的客户端的能力。
原文: 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 拿到服务端对象。
目录
相关文章
|
4月前
|
消息中间件 监控 JavaScript
WebAPI:XMLHttpRequest是怎么实现的?
WebAPI:XMLHttpRequest是怎么实现的?
50 1
|
7月前
|
SQL 存储 JSON
EarthChat SignalR原理讲解
EarthChat SignalR原理讲解
84 3
EarthChat SignalR原理讲解
|
网络协议 JavaScript 前端开发
Yii2如何使用WebSocket?底层原理是什么?
Yii2如何使用WebSocket?底层原理是什么?
375 0
|
开发框架 .NET 开发工具
SignalR 2.x入门(一):SignalR简单例子
SignalR 2.x入门(一):SignalR简单例子
156 0
SignalR 2.x入门(一):SignalR简单例子
|
开发框架 JavaScript 前端开发
SignalR 2.x入门(二):SignalR在MVC5中的使用
SignalR 2.x入门(二):SignalR在MVC5中的使用
124 0
SignalR 2.x入门(二):SignalR在MVC5中的使用
|
JSON 前端开发 测试技术
ajax的再次封装!(改进版) —— new与不 new 有啥区别?
  生命不息重构不止!     上一篇写了一下我对ajax的再次封装的方法,收到了很多有价值的回复,比如有童鞋建议用$.extend,一开始还以为要做成插件呢,后来才知道,原来这个东东还可以实现合并。
1152 0
|
JavaScript 前端开发 API
SignalR的Javascript客户端API使用方式整理
原文:SignalR的Javascript客户端API使用方式整理 SignalR的服务端提供了两种实现方式,分别是PersistentConnection和Hub,这两种方式的侧重点不同: PersistentConnection更接近于底层,编程接口比较简单,传输的数据格式为纯文本,客户端只需要调用发送和定义接收方法就可以实现跟服务端的交互。
1276 0
|
JavaScript C#
SignalR的简单使用(二)
原文:SignalR的简单使用(二)   之前提到SignalR代理在网页,通过生成的Js来完成相关的功能。但我不禁想一个问题, 难到SignalR的服务端就能寄存在web端吗,通过访问网页能方式才能启动服务,还有客户端 也只能在web端吗?经过看官网的教程得到 了结论,两者的答案都是否定的。
1142 0