ASP.NET SignalR 系列(九)之源码与总结
1、SignalR 1.0与2.0有些不同,以上篇章均只支持2.0+
2、必须注意客户端调用服务端对象和方法时的大小写问题
3、客户端上的方法不能重名
4、IE7及以下的,需要增加json的分析器,分析器下载地址:https://www.nuget.org/packages/json2
5、以上篇幅只介绍hub集线器,关于永久连接类,用的比较少,需要的话,请自行网上查资料
补充:
服务器端动态调用方法:
如何从客户端调用服务器方法
要在服务器上调用方法,请使用InvokeHub代理上的方法。
如果服务器方法没有返回值,请使用方法的非泛型重载Invoke。
没有返回值的方法的服务器代码
public class StockTickerHub : Hub
{
public void JoinGroup(string groupName)
{
Groups.Add(Context.ConnectionId, groupName);
}
}
客户端代码调用没有返回值的方法
stockTickerHubProxy.Invoke("JoinGroup", "SignalRChatRoom");
如果服务器方法具有返回值,请将返回类型指定为方法的泛型类型Invoke。
具有返回值并采用复杂类型参数的方法的服务器代码
public IEnumerable<Stock> AddStock(Stock stock)
{
_stockTicker.AddStock(stock);
return _stockTicker.GetAllStocks();
}
Stock类用于参数和返回值
public class Stock
{
public string Symbol { get; set; }
public decimal Price { get; set; }
}
客户端代码在ASP.NET 4.5异步方法中调用具有返回值并采用复杂类型参数的方法
var stocks = await stockTickerHub.Invoke<IEnumerable<Stock>>("AddStock", new Stock() { Symbol = "MSFT" });
foreach (Stock stock in stocks)
{
textBox.Text += string.Format("Symbol: {0} price: {1}\n", stock.Symbol, stock.Price);
}
客户端代码在同步方法中调用具有返回值并采用复杂类型参数的方法
var stocks = stockTickerHub.Invoke<IEnumerable<Stock>>("AddStock", new Stock() { Symbol = "MSFT" }).Result;
foreach (Stock stock in stocks)
{
textBox.Text += string.Format("Symbol: {0} price: {1}\n", stock.Symbol, stock.Price);
}
该Invoke方法异步执行并返回一个Task对象。如果未指定await或.Wait(),则在调用的方法执行完之前,将执行下一行代码。
服务端动态调用客户端方法:
string methodToCall = "addContosoChatMessageToPage"; //客户端方法名
IClientProxy proxy = Clients.All;
proxy.Invoke(methodToCall, name); //name是客户端方法接收的参数
参考地址:https://www.cnblogs.com/Soulless/p/7235524.html
微软上的教程:https://docs.microsoft.com/zh-cn/aspnet/signalr/
源码地址:
链接:https://pan.baidu.com/s/1orecSLynKIoCkMyUVNYc2Q
提取密码:zbg1
ASP.NET SignalR 系列(九)之源码与总结的更多相关文章
- java多线程系列(九)---ArrayBlockingQueue源码分析
java多线程系列(九)---ArrayBlockingQueue源码分析 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量的并发访问 j ...
- 《ASP.NET SignalR系列》第一课 认识SignalR
从现在开始相关文章请到: http://lko2o.com/moon 一.概述 ASP.NET signalr对ASP.NET开发者来说是一个新的程序库,它能让我们更加容易便捷地开发实时通信功能; s ...
- Mybatis 系列10-结合源码解析mybatis 的执行流程
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
- Alink漫谈(十九) :源码解析 之 分位点离散化Quantile
Alink漫谈(十九) :源码解析 之 分位点离散化Quantile 目录 Alink漫谈(十九) :源码解析 之 分位点离散化Quantile 0x00 摘要 0x01 背景概念 1.1 离散化 1 ...
- 《ASP.NET SignalR系列》第五课 在MVC中使用SignalR
接着上一篇:<ASP.NET SignalR系列>第四课 SignalR自托管(不用IIS) 一.概述 本教程主要阐释了如何在MVC下使用ASP.NET SignalR. 添加Signal ...
- 《ASP.NET SignalR系列》第四课 SignalR自托管(不用IIS)
从现在开始相关文章请到: http://lko2o.com/moon 接着上一篇:<ASP.NET SignalR系列>第三课 SignalR的支持平台 一.概述 SignalR常常依托于 ...
- 《ASP.NET SignalR系列》第三课 SignalR的支持平台
从现在开始相关文章请到: http://lko2o.com/moon 接着第二课:<ASP.NET SignalR系列>第二课 SignalR的使用说明 一.服务器系统要求 SignalR ...
- 《ASP.NET SignalR系列》第二课 SignalR的使用说明
从现在开始相关文章请到: http://lko2o.com/moon 接续上一篇:<ASP.NET SignalR系列>第一课 认识SignalR (还没有看的话,建议您先看看) 一.指定 ...
- SequoiaDB 系列之七 :源码分析之catalog节点
这一篇紧接着上一篇SequoiaDB 系列之六 :源码分析之coord节点来讲 在上一篇中,分析了coord转发数据包到catalog节点(也有可能是data节点,视情况而定).这一次,我们继续分析上 ...
- SequoiaDB 系列之六 :源码分析之coord节点
好久不见. 在上一篇SequoiaDB 系列之五 :源码分析之main函数,有讲述进程开始运行时,会根据自身的角色,来初始化不同的CB(控制块,control block). 在之前的一篇Sequ ...
随机推荐
- 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
原文:https://mp.weixin.qq.com/s/lpsQ3dEZHma9H0V_mcxuTw 一.资料文档 二.开发语言 三.支持的协议 四.消息存储 五.消息事务 六.负载均衡 七.集群 ...
- 【Tomcat】安装Tomcat服务器&Tomcat的目录结构
创建时间:6.14 一.安装Tomcat服务器 Tomcat下载ver8的,现在用的多 下载并解压 配置环境变量:(切记!!不然startup那步会闪退) 1.新建系统环境变量: (1)进入根目录,复 ...
- Bootstrap 提示工具(Tooltip)插件
一.提示工具(Tooltip)插件根据需求生成内容和标记,默认情况下是把提示工具(tooltip)放在它们的触发元素后面. 有以下两种方式添加提示工具(tooltip): 1.通过data属性:如需添 ...
- js提取DOM属性和设置DOM属性值
<style type="text/css"> #div1{width:100px;height:100px;} #div2{background} </styl ...
- Python基础之输出格式和If判断
格式化输出的三种方式 一.占位符 #占位符 name = 'nick' age = 19 print('my name is %s my age is %s' % (name, age)) age = ...
- 模板语言、url
伪造一个数据库全局变量 (字典无序) USER_LIST 列表变字典(元祖和列表直接循环就好,字典涉及到k_v) UESR_DICT 遍历方法 1. 2. 3. 4. 5. 6.键入链接 通过a标签包 ...
- OpenCV 学习笔记(14)为轮廓创建边界旋转框和椭圆
https://docs.opencv.org/3.4/de/d62/tutorial_bounding_rotated_ellipses.html 不旋转 #include "opencv ...
- 在jsp页面中通过struts的标签<s:if>来判断选择显示控件
<s:iterator value="#request.users" var="u"> <!-- 判断该条评论的评论人是不是查看这篇评论的用户 ...
- table开发中遇到的问题
table元素是一个很常用的元素.但是在开发中,我也遇到了一些值得记录下来的问题及解决方案: 1.td内容溢出时,隐藏内容并且以省略号提示 .hide-content{ /* 不换行 */ white ...
- org.Hs.eg.db
bioconduction 主页 http://www.bioconductor.org/packages/release/data/annotation/html/org.Hs.eg.db.html ...