asp.net signalR 专题—— 第四篇 模拟RPC模式的Hub操作-阿里云开发者社区

开发者社区> 一线码农> 正文

asp.net signalR 专题—— 第四篇 模拟RPC模式的Hub操作

简介:
+关注继续查看

 在之前的文章中,我们使用的都是持久连接,但是使用持久连接的话,这种模拟socket的形式使用起来还是很不方便的,比如只有一个唯一的

OnReceived方法来处理业务逻辑,如下图:

1 protected override Task OnReceived(IRequest request, string connectionId, string data)
2 {
3 return Connection.Broadcast(data);
4 }

但是在singlaR体系中并不是这样,我们还有更加平易近人的一个类似RPC的Hub层,如下图一样:

是不是很好奇??? 下面我们来看看这个Hub层怎么构建。

一:新建hub集线器层

选择web模板,下面有一个singlaR集线器类的模板,新建即可,在这个模板中有一个示例代码,Clients.All.hello() 就是用来调用客户端的hello方法,

而MyHub1中的Hello()用来让客户端调用,如此这样来实现双向通讯,如下图:

二:在Startup中注册

  其实注册很简单,比持久连接还容易,因为持久连接需要一个“类”map一个“url”这样的模式,而Hub就不需要了,它就是用一个默认的singlar路径

map整个hub,比如下图中的提示:

三:实现客户端

客户端实现的话,有代理一说和无代理一说,无代理的话,我们自己createProxy,有代理的话就是利用动态生成一个js文件进行编程。

1. 无代理模式

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <meta charset="utf-8" />
 <script src="scripts/jquery-1.10.2.js"></script>
 <script src="scripts/jquery.signalR-2.1.2.js"></script>
</head>
<body>
 <script type="text/javascript">
 //无代理
 var conn = $.hubConnection();

 var proxy = conn.createHubProxy("MyHub1");

 //注册客户端方法 “hello”
 proxy.on("hello", function (data) {
 console.log("客户端方法被调用");
 });

 conn.start().done(function (data) {

 //调用服务器方法
 proxy.invoke("Hello");

 });
 </script>
</body>
</html>

从上面可以看到,invoke方法就是调用服务器方法的操作,比如这里服务端的Hello方法,js中的on就是用来绑定客户端方法,让服务器调用,

然后我们运行一下:

2. 有代理模式

  有代理的模式下,需要动态生成一个js,使用方式就是script引用。

<script src="/signalr/js"></script>

然后运行程序之后,就有了自动生成的一个js文件,是不是很神奇~~~

有了这个js之后,我们就可以方便的编程了,但是有个遗憾点就是,js是在程序运行后才生成的,这样的话,在代码编程的时候是无法有这个动态生

成的js文件,唯一可以做到的就是:先将运行好的js代码copy到script文件夹下面,添加引用之后,就可以在vs中编程了,如下图:

好了,有人说这种方式不是很方便,确实不方便,我们也有更高级的用法,那就是使用singlar.utils下面的signlar.exe +vs事件生成,这种模式

可以参考本页面右上角的微博。

好了,就此打住~,继续忙活了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ASP.Net Core的Code Fist代码先行操作方法
Asp.Net  core的Code Fist(代码先行)主要有以下几步: 1.创建实体类 2.创建数据库上下文 3.填加连接字符串 4.依赖注入 5.添加基架工具并执行初始迁移 6搭建模型的基本架构(更具模型生成网页Page) 首先需要在创建出实体类,此处以微软官方文档中的Movice实体类为例。
1041 0
WEBGL学习【十二】鼠标操作场景
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/78515907 ...
868 0
御术:比能力更重要的是你的底层操作系统
成就那个初心,活着,活过,大多看起来「自律」的人只不过是习惯了用梦想来「自虐」。
793 0
dedecms调用当前栏目的子栏目怎么操作
  有时我们建网站会建很多分类,每个分类又有小分类,为了让顶级栏目获得更好的权重和排名,我们会聚合子栏目。那么dedecms调用当前栏目的子栏目怎么操作呢?   有两种方法:标签dede:sonchannel和标签channel type='son'   1、dede:sonchannel ...
841 0
Asp.Net Web API 2第二课——CRUD操作
原文:Asp.Net Web API 2第二课——CRUD操作 Asp.Net Web API 导航     Asp.Net Web API第一课——入门http://www.cnblogs.com/aehyok/p/3432158.html 前言   CRUD代表着 Create、Read、Update、Delete,这是四个基本的数据库操作。
1216 0
Python爬虫入门教程 51-100 Python3爬虫通过m3u8文件下载ts视频-Python爬虫6操作
什么是m3u8文件 M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。 原视频数据分割为很多个TS流,每个TS流的地址记录在m3u8文件列表中 比如我这里有一个m3u8文件...
1643 0
+关注
194
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载