关于SignalR

因近期要在项目中使用 SignalR 来开发实时web 程序,可在这之前,对SignalR 的了解并不是很多,甚至不知道 SignalR 到底是用来干什么的,可是在经过这段时间的学习和做的一些SignalR 项目,对 SignalR 有了一些了解,以下是我自己对 SignalR 的理解。

ASP.NET  SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程,可用于添加任何需要实时交互的web 程序,或全新类型的 web 应用程序需要高频率更新在服务器上,使客户机与服务器能够双向通信,并保证连接是持续的。例如在线聊天室和在线股票。

SignalR会自动管理客户端连接,允许服务端向所有客户端推送信息,也可以向特定的客户端发送信息。客户端与服务商之间的链接是持久化的,不像每次都开启一个新链接的传统HTTP连接方式。

SignalR 支持"服务器推送"功能,可由服务器代码推送内容给连接客户端立即可用,而不是服务器等待客户端请求新的数据,即请求-响应 。以通过服务总线、SQL SERVER数据库或Redis扩容至数千客户端。

SignalR是开源的,可以通过Github获取。获取地址:

SignalR 提供了简单的 API ,可通过在浏览器中使用 javascript 函数来进行调用从服务器端.NET 代码的服务器到客户端的远程过程调用 (RPC),SignalR 还包括用于连接管理的 API (例如,连接和断开连接事件和分组连接。

SignalR 在可用,使用新的 WebSocket 传输和回退到较旧的运输,在必要时。虽然您肯定可以编写您的应用程序直接使用 WebSocket,使用大量的额外的功能,您将需要实现已经将被做为你的 SignalR 手段。最重要的是,这意味着您可以编写应用程序,利用 WebSocket,而不必担心为旧式客户端创建单独的代码路径。 SignalR 也盾牌你不必担心对 WebSocket,更新,因为 SignalR 将继续更新,以支持变化基础传输协议,提供您的应用程序跨 WebSocket 版本一致的接口。

当然,您可以创建一个使用 WebSocket 单独的解决方案, SignalR 提供的所有功能,您将需要自己写的如回退到其他的交通工具和修改您的应用程序更新到 WebSocket 实现。   SignalR 连接

SignalR 连接为 HTTP开始,然后提升到 WebSocket 连接,并自动检查webSocket是否可用。WebSocket 是理想的传输协议, SignalR可使服务器的内存最有效的利用,具有最低的延迟,和最基本的功能 (比如全双工通信客户端和服务器之间),但它也有最严格的要求: WebSocket 要求服务器使用 Windows Server 2012 或 Windows 8 和.NET 框架 4.5。如果不满足这些要求, SignalR 将尝试使用其他的传输协议,使其连接。

使用HTML 5

Signalr的全双工通信功能取决于对HTML 5的支持。如果客户端浏览器不支持 HTML 5 标准,将使用 TCP 协议。  WebSocket(如果服务器和浏览器支持 Websocket)。WebSocket 是建立真正的全双工通信协议,双向连接,是客户端和服务器之间的唯一的持久连接。然而,WebSocket 也有最严格的要求 ;它仅完全支持较高版本的Internet Explorer Google Chrome、 火狐浏等览器,并只在其他浏览器 Safari 已经部分实现。

服务器发送事件,也称为 EventSource (如果浏览器支持服务器发送事件, Internet Explorer 除外)。

 

SignalR (一)的更多相关文章

  1. SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]

    目录 SignalR系列目录 前言 也是好久没写博客了,近期确实很忙,嗯..几个项目..头要炸..今天忙里偷闲.继续我们的小系列.. 先谢谢大家的支持.. 我们来聊聊SignalR的性能监测与服务器的 ...

  2. ABP文档 - SignalR 集成

    文档目录 本节内容: 简介 安装 服务端 客户端 连接确立 内置功能 通知 在线客户端 帕斯卡 vs 骆峰式 你的SignalR代码 简介 使用Abp.Web.SignalR nuget包,使基于应用 ...

  3. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  4. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论

    异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#signalR 后台创建了一个DntHub的集线器 前台在调用的时候出现了问题(经检查是代理对象 ...

  5. 基于SignalR实现B/S系统对windows服务运行状态的监测

    通常来讲一个BS项目肯定不止单独的一个BS应用,可能涉及到很多后台服务来支持BS的运行,特别是针对耗时较长的某些任务来说,Windows服务肯定是必不可少的,我们还需要利用B/S与windows服务进 ...

  6. SignalR SelfHost实时消息,集成到web中,实现服务器消息推送

    先前用过两次SignalR,但是中途有段时间没弄了,今天重新弄,发现已经忘得差不多了,做个笔记! 首先创建一个控制台项目Nuget添加引用联机搜索:Microsoft.AspNet.SignalR.S ...

  7. SignalR系列目录

    [置顶]用SignalR 2.0开发客服系统[系列1:实现群发通讯] [置顶]用SignalR 2.0开发客服系统[系列2:实现聊天室] [置顶]用SignalR 2.0开发客服系统[系列3:实现点对 ...

  8. 基于SignalR的消息推送与二维码描登录实现

    1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

  9. XAMARIN.ANDROID SIGNALR 实时消息接收发送示例

    SignalR 是一个开发实时 Web 应用的 .NET 类库,使用 SignalR 可以很容易的构建基于 ASP.NET 的实时 Web 应用.SignalR 支持多种服务器和客户端,可以 Host ...

  10. ABP源码分析三十二:ABP.SignalR

    Realtime Realtime是ABP底层模块提供的功能,用于管理在线用户.它是使用SignalR实现给在线用户发送通知的功能的前提 IOnlineClient/OnlineClient: 封装在 ...

随机推荐

  1. 好玩的Python库tqdm (转载)

    原文地址: https://blog.csdn.net/zejianli/article/details/77915751 可以显示循环的进度条的库,再也不用担心不知道程序跑到哪里还要跑多久了 tqd ...

  2. ZOJ2402 Lenny's Lucky Lotto List 简单DP

    Lenny's Lucky Lotto Lists Time Limit: 2 Seconds      Memory Limit:65536 KB Lenny likes to play the g ...

  3. 【vue】vue-cli 脚手架项目简介(一) - package.json

    vue-cli是用来生成 vue项目的命令行工具,它的使用方法是这样的: vue init <template-name> <project-name>第二个参数 templa ...

  4. timescaledb 集成prometheus

    timescaledb 1.0 已经发布了,同时支持prometheus 使用doker-compose 运行 环境准备 docker-compose 文件 version: '2.1' servic ...

  5. Cygwin安装与使用入门

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/canlets/article/details/28646115 对于 UNIX 本身,也有各种称呼. ...

  6. Zxing图片拉伸解决 Android 二维码扫描

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/aaawqqq/article/details/24852915  二维码扫描  Android Zx ...

  7. 和为 s 的两个数字(和为 s 的连续正数序列)

    题目 输入一个递增排序的数组和一个数字 s,在数组中查找两个数,得它们的和正好是 s.如果有多对数字的和等于 s,输出任意一对即可 思路 我们先在数组中选择两个数字,如果它们的和等于输入的 s,我们就 ...

  8. file-loader 与 url-loader 的区别

    url-loader是对file-loader的一个封装,比如webpack中对图片的加载器配置 {test: /\.(png|jpg)$/, loader: 'url-loader?limit=81 ...

  9. Spring本质-AOP

    一.我们在做系统设计的时候,一个非常重要的工作就是把一个大系统做分解, 按业务功能分解成一个个低耦合.高内聚的模块,就像这样: 但是分解以后就会发现有些很有趣的东西, 这些东西是通用的,或者是跨越多个 ...

  10. maven 指定 jdk 版本

    方法1:直接修改 本地  settings.xml 文件 <profiles>  </profiles> 之间加入 下面的 <profile> <id> ...