今天从一个业余开发的群里,看到有人要求这样一个项目需求:

1,)学员可以通过在线课堂找到自己喜欢的老师和课程。

2,)每个人可以建立自己课堂,每个课堂扣分多个子房间,交流群。设置管理员;有录音功能,可以送鲜花,表情。

3,)可以直接从收藏的课程里看到该课程有多少学员在线。

4,)加好友,邀请好友功能。

5,)开课前30分钟,20分钟,10分钟,5分钟系统自动通知提醒学员进入课堂学习。

6,)老师与学员实时在线互动,交流,支持音乐伴凑,PPT等教学文档,超大教室容量。

  看了这个后,就想这个需求用什么技术能实现,前段时间接触到Socket,感觉Socket能可以实现通过Tcp给客户端发送消息的功能,可这个需求很明显就是一个B/S需求,使用Socket的可能性就不大了,难道说要在客户端使用javascript轮询服务器端,从数据库中查询数据,设置心跳为1s,这样似乎也能达到实时的效果,但感觉很不正宗,知道html5开始支持实时获取服务器端推送信息,实现实时更新功能,但前段时间又听说了微软有了一个SingalR,但以前弄不明白什么是SingalR,就像弄不明白什么是Owin一样。

  不过,幸运的是------摆渡了下chat room,才知道原来SingalR原来可以实现Chat Room的工能。

  • 什么是SingalR?

  那么,什么是SingalR?

  ASP.NET SingalR是一个类库,为开发者简化了向程序添加实时Web功能的过程。实时Web功能使得服务端代码推送内容到连接客户端成为了可能,取代了服务器端不得不等待客户端发送请求新的数据。

SingalR可以用来添加任何形式的“实时”功能到你的ASP.NET Web应用程序。而聊天经常被用作一个例子,你可以使用它干更多的事情。任何时候用户刷新页面来查看新的数据,或者页面通过长轮来获取新的数据,这些应用都可以使用SignalR来实现。例如:仪表板,监控应用,协同应用(如同时对文档进行编辑) ,工作进度更新,实时的形式。

SingalR可以完成新类型的web应用-----需要高频率从服务器更新。例如,实时游戏,一个很好的游戏应用例子:ShootR game.

SingalR提供简单的API来创建服务器到客户端的远程过程调用(RPC),调用Javascript函数在客户端浏览器(和其他客户端平台)从服务器端的.NET代码。SignalR还包连接管理API (例如,连接和断开事件),和分组连接。

SignalR自动处理连接管理,同时允许你发送广播消息到所有客户端,就像一个聊天室。你也可以发送消息到特定的客户端。客户端与服务器之间的连接是持久化的,不像传统的HTTP连接,需要重建连接为每一个通道。

SignalR支持“服务器推送”功能,在服务器代码中可以调用外部客户端的代码通过远程过程调用(RPC)在浏览器中,而不是像今天常见的web的请求响应模式。

SignalR应用可以扩展到成千上万的客户端使用服务总线,SQL Server或Redis.

SignalR是开源的,可以通过Github访问。

  • SignalR 与 WebSocket

SignalR需要使用新型的WebSocket传输,需要使用旧的回落传输。然而你也可以直接使用WebSocket来实现,但是使用SignalR意味着许多你本来需要额外去实现的功能已经替你做了。更重要的是,这意味着你可以直接使用WebSocket来编写你的应用,而不必担心老的客户端创建一个特殊的代码路径。SignalR可以免于你担心WebSocket更新,应为SignalR将会继续更新来支持底层传输的变化,为您的应用针对不同版本WebSocket提供一个一致接口。

你也可以创建一个单独使用WebSocket的解决方案,SignalR为你提供的所有功能你需要自己去写,例如,回退到其他传输,当WebSocket更新时修订你的程序。

  • Transports 与 fallbacks

  SignalR是需要通过一些抽象的传输来实现客户端与服务器之间的实时工作。一个SignalR连接开始像HTTP,如果WebSocket连接可用将使用它。WebSocket对SignalR来说是理想化的传输,尽管WebSocket传输会占用较多服务器内存,具有最低的延时,具有最基本特征(如使用全双工联络客户端和服务器),它对设备也有严格的要求:WebSocket要求服务器使用Windows Server2012或者Windows 8和.Net Framework4.5.如果这些条件不满足,SignalR将尝试使用其他传输方式进行连接。

参考资料:

http://www.asp.net/signalr/overview/security/hub-authorization
https://github.com/JabbR/JabbR
http://www.asp.net/signalr/overview/guide-to-the-api/working-with-groups
http://www.codeproject.com/Articles/562023/Asp-Net-SignalR-Chat-Room

值得参阅文章及资源:

怎么开发一个在线会议系统:

http://stackoverflow.com/questions/470698/developing-a-video-chat-application-with-high-quality-video-streaming

videolan.视频播放器:http://www.videolan.org/

videolan.讨论区:https://forum.videolan.org/

在线视频,语音开源技术:ConferenceXP:

ConferenceXP官网:http://cct.cs.washington.edu/

ConferenceXP作者github地址:https://github.com/fvideon

基于开源CTX SDK(http://site3.ucentrik.com/)开发的一个在线视频例子:

http://vcca.codeplex.com/

原生在线视频开发例子通过API开发:

http://www.codeproject.com/Articles/17048/Examples-to-create-your-Conferencing-System-in-NET

基于html5 WebRTC开发视屏:

http://www.codeproject.com/Articles/515192/Video-Conferencing-using-WebRTC

刚看到这个消息:

http://outercurve.org/

Outercurve基金会,曾用“CodePlex 基金会”为名(为了与CodePlex网站作区分所以进行了更名),成立于2009年9月10日,主要用来让软件业者及开源团体分享源代码,并促进双方的交流。
根据声明,基金会主要采用论坛形式,让开放源始码社区及软件开发社区一起促进参与 开源团体项目的共同目标。在既有的开放源码组织之外,让各界通过此一论坛分享彼 此的认知及最佳实现。
注: CodePlex 网站是一个由微软所建置的 Open Source 网站,在此网站中所发布的所有程序都可以下载源代码使用,目前它已经成为微软软件的周边组件或扩展的发布管道。   

原来现在很多人都用SignalR来实现Chat Room的更多相关文章

  1. 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?

    今天群里有人聊图片上传,简单说下自己的经验(大牛勿喷) 0.如果你的方法里面是有指定路径的,记得一定要过滤../,比如你把 aa文件夹设置了权限,一些类似于exe,asp,php之类的文件不能执行,那 ...

  2. 很多人都在埋怨没有遇到好的团队,但好的团队不可能凭空出现,一流的团队不能仅靠团队成员努力,作为Leader,要有可行的规划,并坚定地执行、时势地调整(转)

    <西游记>中的唐僧团队历经千难万险,终于求得真经,目标明确.分工合理为这支队伍最终走向成功奠定了基础.唐僧从一开始,就为这个团队设定了西天取经的目标,虽然经历各种挫折与磨难,但目标从未动摇 ...

  3. [转帖](区块链补习班)ERC20很多人都听过,但ERC是什么你真的了解吗?

    (区块链补习班)ERC20很多人都听过,但ERC是什么你真的了解吗? http://baijiahao.baidu.com/s?id=1600948969290990883&wfr=spide ...

  4. 听说特斯拉花了4个月研发出新ERP,然后很多人都疯了

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 最近这件事儿在SAP圈里炒的挺火的,最主要是因为这几个关键词: 放弃SAP.4个月.自研ERP: 这则新闻一出来,很多人都兴高采烈,都要疯了 ...

  5. 很多人都搞不清楚C语言和C++的关系!今天我们来一探究竟为大家解惑~

    最近,身边有许多小伙伴已经开始学习编程了,但是呢,学习又会碰到许多的问题,其中作为新手小白提到最多的问题就是编程语言的选择. 每次遇到这种问题,看起来很简单,但是又有很多小伙伴搞不清编程语言之间的关系 ...

  6. 震惊!很多人都不知道 CSS Grid 框架早就有了!

    前言 写作本文起源于知乎的一个问题:[CSS Grid 布局那么好,为什么至今没有人开发出基于 Grid 布局的前端框架呢?] 这篇文章拖沓了两个月,是因为真的不知道从哪里说好.这个问题的所有回答几乎 ...

  7. 很多人都不知道的监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的 需求,那 ...

  8. 很多人都没用过的轻量级Oracle数据库数据导出工具SQLLDR2——性能超赞

    SQLLDR2 介绍 每周发表一篇数据库或大数据相关的帖子,敬请关注 1. 工具介绍 Sqluldr2(SQL * UnLoader 第二版)是灵活与强大的 Oracle 文本导出程序,已被大众使 用 ...

  9. 性能测试 | Linux系统top命令中的io使用率,很多人都误解了它的具体含义

    body{ text-align:left; width:80%; margin:10px 100px; } 最近在做连续数据流的缓冲系统,C语言代码实现后,粗略测试了下,功能上应该没有问题.那么,接 ...

随机推荐

  1. 郎科U208(主控 PS2251-50 HYNIX H27UCG8T2MYR)量产还原

    6年前的一个U盘 记得还是参加某会议送的,当时做了量产 多做了一个光盘区,现在用不着了  想还原成普通U盘 忘了方法. 可见笔记的重要性 Chipgenius看了主控 PS2251-50 芯片是海力士 ...

  2. SQL搜索下划线,like中不能匹配下划线的问题

    最近在检测天气预报15天查询网 站(http://tqybw.net)时的URL时,发现页面中有很些404页,分析发现,是请求地址的能参数中多了下划线“_”,而rewrite规 则中并没有配这样的规则 ...

  3. 2.PHP内核探索:一次请求的开始与结束

    PHP开始执行以后会经过两个主要的阶段: 处理请求之前的开始阶段 请求之后的结束阶段 开始阶段有两个过程: 第一个过程是模块初始化阶段(MINIT), 在整个SAPI生命周期内(例如Apache启动以 ...

  4. 微信公众账号开发教程(一) 基本原理及微信公众账号注册 ——转自http://www.cnblogs.com/yank/p/3364827.html

    微信公众账号开发教程 基本原理 在开始做之前,大家可能对这个很感兴趣,但是又比较茫然.是不是很复杂?很难学啊? 其实恰恰相反,很简单.为了打消大家的顾虑,先简单介绍了微信公众平台的基本原理. 微信服务 ...

  5. cvWaitKey 如果 cvNamedWindow就不会起作用

    Have you called cvNamedWindow yet? It will not work without cvNamedWindow. http://stackoverflow.com/ ...

  6. Block的简单使用

    代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数,并得到返回值. 代码块本质上是变量,只不过它存储的数据是一个函数体,因此名字 ...

  7. awk统计nginx日志访问前一百的ip

    访问ip  awk '{print $1}' access.log| sort | uniq -c | sort -n -k 1 -r | head -n 100 访问地址 awk '{print $ ...

  8. 关于xampp使用不同端口的虚拟机

    1.打开apache/conf/httpd.conf文件加入listen 8080(监听的端口号) 然后加入 # Virtual hostsInclude "conf/extra/httpd ...

  9. 修改delphi xe6 FMX Label字体颜色

    delphi fmx的字体等设置默认与皮肤有关,用代码直接修改字体颜色等是无效的,如何才能用代码修改呢?请按以下方法就可以: 1.在Object inspector中取消StlyedSettings中 ...

  10. JS:checkFrom对输入框和文本框的判断总结

    天看了老东家的一个专题页面,发现里边的checkFrome.js收集了很多对文本框的判断,非常有用收藏一下.其中包含了:1.页面截取字符串2.文本框最大长度限制3.判断必须是数字和字母的组合4.判断是 ...