ASP.NET SignalR介绍
是什么?
简单来说,ASP.NET SignalR是一个开源的实时通讯(real-time)库,有了ASP.NET SignalR,我们可以在
应用场景
从介绍可以看出,ASP.NET SignalR是为实时通讯而生的,所以典型的应用场景有:
- 支付回调
- 聊天室
环境要求
一,服务器端
1,操作系统
- Windows Server 2008 r2
- Windows Server 2012
- Windows Server 2016
注意:如果要使用WebSockets,要求操作系统Windows Server 2012+。
2,.net framework
支持.net framework 4.5+。
3,IIS
IIS 7+并且需要集成模式。
二,客户端
1,操作系统
客户端支持的操作系统为Windows 7+。
2,浏览器
- IE8+
- Firefox的所有版本
- Chrome的所有版本
- Safari的所有版本
- Opera的所有版本
注意:jQuery的版本必须>=1.6.4。
原理
1,客户端和服务端的交互如下图:
2,ASP.NET SignalR的架构图:
传输协议的协商
默认情况下,SignalR会自动协商传输协议,协商的过程如下:
如果浏览器是Internet Explorer 8或更早版本,则使用长轮询。
如果配置了JSONP(即,在启动连接时将
jsonp
参数设置为true
),则使用长轮询。如果正在建立跨域连接(即,如果SignalR端点与托管页面不在同一个域中),则在满足以下条件时将使用WebSocket:
客户端支持CORS(跨源资源共享)。有关哪些客户端支持CORS的详细信息,请参阅caniuse.com上的CORS。
客户端支持WebSocket
服务器支持WebSocket
如果不满足任何这些标准,将使用长轮询。有关跨域连接的详细信息,请参阅如何建立跨域连接。
如果未配置JSONP且连接不是跨域连接,则如果客户端和服务器都支持,则将使用WebSocket。
如果客户端或服务器不支持WebSocket,则使用Server Sent Events(如果可用)。
如果“服务器已发送事件”不可用,则尝试使用“永久帧”。
如果Forever Frame失败,则使用长轮询。
- 微信支付-微信红包Java版本
- Universe入门
- 分享一款值得分享的写作工具
- 微信二次开发Java自定义菜单事件实现
- 微信OAuth授权获取用户OpenId-JAVA(个人经验)
- 【手写文字识别】-JavaAPI示例代码
- 【Python3-API】情感倾向分析示例代码
- SpringMVC+Hibernate +MySql+ EasyUI实现CRUD(一)
- 【Python3-API】通用文字识别示例代码
- Python入门教程之安装MyEclipse插件和安装Python环境
- AutoFlowLayout-多功能流式布局与网格布局控件
- RBAC新解:基于资源的权限管理(Resource-Based Access Control)
- 基于开源项目搭建属于自己的技术堆栈
- Redis整合Spring项目搭建实例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言进阶之图形参数
- 第04期:Prometheus 数据采集(三)
- 技术分享 | Online DDL 工具 gh-ost
- Spring Boot 整合Mybatis
- R语言进阶之时间序列分析
- Spring Boot 实现员工信息管理demo
- 如何把 Flutter 云端一体化做到极致?
- 微服务[学成在线] day16:基于Spring Security Oauth2开发认证服务
- 新的跨域策略:使用COOP、COEP为浏览器创建更安全的环境
- CVE-2020-1948:Dubbo Provider默认反序列化复现
- R语言进阶之因子分析
- Spring Boot 整合Thymeleaf
- Spring Boot 整合Shiro
- 微服务[学成在线] day01:CMS接口开发
- 微服务[学成在线] day02:CMS前端开发