博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SignalR的简单实现(一)
阅读量:4610 次
发布时间:2019-06-09

本文共 2017 字,大约阅读时间需要 6 分钟。

   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 拿到服务端对象。

转载于:https://www.cnblogs.com/xiaoai123/p/6635344.html

你可能感兴趣的文章
【转】梯度下降算法以及其Python实现
查看>>
H5的本地存储
查看>>
1035 Password (20 分)
查看>>
VC静态连接库注意事项
查看>>
并不对劲的hdu4777
查看>>
如何在个人博客首页中添加访问计数器
查看>>
Morning Reading Collection
查看>>
Sudo
查看>>
JS案例之8——从一个数组中随机取数
查看>>
C#中Dictionary小记
查看>>
mysql日期类型默认值'0000-00-00'容错处理
查看>>
openni和骨架追踪 rviz查看---34
查看>>
防止网站被iframe调用
查看>>
B - 畅通工程(并查集)
查看>>
linux使用rz、sz快速上传、下载文件
查看>>
判断数字的正则表达式
查看>>
DOC常用命令(转)
查看>>
php写一个判断是否有cookie的脚本
查看>>
Mac配置Fiddler抓包工具
查看>>
转:Java并发集合
查看>>