zoukankan      html  css  js  c++  java
  • 原来现在很多人都用SignalR来实现Chat Room

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

    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 网站,在此网站中所发布的所有程序都可以下载源代码使用,目前它已经成为微软软件的周边组件或扩展的发布管道。   
  • 相关阅读:
    HTML5和HTML4之间的区别
    HttpRequest信息内容介绍
    Spring Web MVC处理请求的流程
    游戏中的路径动画设计与实现
    Python基本数据类型
    Python基本数据类型
    perl .= 操作符
    出差二、三事——北漂18年(25)
    perl 卸载Oracle数据库
    perl 卸载mysql数据库
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/4643947.html
Copyright © 2011-2022 走看看