zoukankan      html  css  js  c++  java
  • web即时通信1--WebSocket与WebRTC的三种实现方式对比

    转自:http://demo.netfoucs.com/jrn1012/article/details/41982971

            最近应项目组要求研究了下WebRTC(目前支持Firefox和Chrome),WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术。WebRTC使得开发者在浏览器无需安装任何插件就可以实现语音视频通信。

            为了将近期成果做个总结,决定写一个"Web即时通讯“的专题,因为WebSocket是WebRTC的基础,WebSocket为WebRTC负责客服端发现和数据转发,(因为WebSocket是一项“服务器推”技术,如果想更深入了解这方面的技术,可参考博文Comet:基于 HTTP 长连接的“服务器推”技术 )。基本上能实现WebSocket,就能实现WebRTC(浏览器支持方面有差异,目前IE10以上浏览器、Opera/Firefox/Chrome支持WebSocket,但各版本IE不支持WebRTC),

           所以先从WebSocket开始。目前大部分实现WebSocket有三种方式,分别是使用Node.js、tomcat7、spring4。下面将逐一介绍。

       

    一、使用Node.js作为信令服务器实现WebRTC

          通过收集整理网上资料发现,大部分WebRTC信令服务器使用Node.Js(如果不清楚WebRTC相关技术术语,请自行学习初探WebRTC这篇文章不错,有图有真相
    ), 下面列出三个经本人测试可用的Demo,(下载地址为WebRTC Demo)。 其中第三个demo是根据博文最简单的WebRTC示例  整理而来的。

            以第三个demo为例,安装完NodeJS后,使用node server.js启动信令服务器。就可以Chrome上分别输入http://127.0.0.1:3000和http://127.0.0.1:3000#true测试了。

                Node.js做信令服务器代码少,测试比较方便,这方面的DEMO也特别多。

    二、使用Tomcat7作为WebSocket数据转发服务器

          有博友用Tomcat7做WebSocket数据转发服务器,实现了类似WebQQ的在线聊天室,详见博文基于Tomcat7、Java、WebSocket的服务器推送聊天室 后续的WebRTC视频聊天没有涉及,不过应该可以实现,本人没有去实验。

          这类实现方式和特定的服务器有关,系统部署到其他应用服务器如WebLogic,Jetty等,可能功能就会失效。所以使用该种方式实现需要考虑清楚。     

    三、使用Spring4作为WebSocket数据转发服务器

         Spring4出现后,增加了对WebSocket的支持,这对java web开发者来说,是个好消息,因为可以不用针对具体的应用服务器实现WebSocket。而Spring是java web开发中应用比较广泛的了。使用该种方式实现的demo可参照博文Spring WebSocket教程(一)  Spring WebSocket教程(二)  ,它实现了一个文档编辑实时同步和简单的web聊天功能。这个例子采用了Spring MVC+Spirng4+Hibernate3框架,并使用了Maven进行jar包依赖管理和项目构建,数据库采用的是mysql,作者已经发项目发布到gitHub上,地址为https://github.com/xjyaikj/OnlinePreparation(这位博文的作者还是相当给力的)

          我在本地能正常运行项目,但是给出的数据库只有表结构,没有数据。后来我手动添加了数据,如果需要数据可以给我留言啊。

    结束语

          基于Spring4的Demo没有实现WebRTC,因为我们项目中也是用SpringMVC+Spring4+Hibernate+Maven,所以后续的文章会以这个demo为基础实现一个web聊天室(包括WebSocket实现的文字聊天和WebRTC视频聊天)以及基于WebSocket消息推送实现的实时曲线图。

          先上图预告一下:

    web聊天室,实现了即时通信

    下面为实时曲线,会随着时间动态变化

          最后谢谢引用的超链接的原始作者,正式因为有大家分享技术,才能使后来者少走弯路。后续如果时间允许我也会将我的项目demo放到github上。

          下篇文章将会讲一下web聊天室(WebSocket实现文字聊天)。

            

        



          

     

  • 相关阅读:
    浮点数精度问题(2.01.1=0.8999999999)
    创建android的模拟器时屏幕的大小设置
    hdu 3038 How Many Answers Are Wrong(并查集)
    hdu 3635 Dragon Balls(并查集)
    hdu 1598 find the most comfortable road(并查集+暴力搜索)
    hdu 1671 Phone List (字典树)
    hdu 3047Zjnu Stadium(并查集)
    hdu 1247 Hat’s Words(字典树)
    后缀数组——处理字符串的有力工具
    hdu 2473 JunkMail Filter(并查集+虚拟节点)
  • 原文地址:https://www.cnblogs.com/georgewangii/p/4604066.html
Copyright © 2011-2022 走看看