最近应项目组要求研究了下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实现文字聊天)。