半年前Google开源了WebRTC项目,并把其加入到chrome dev版本中,实现浏览器之间无插件的视音频多媒体传输。这个新的技术使用了HTML 5和简单的Javascript API,开发者可以很轻松的创建RTC应用,只要浏览器支持,就可在不安装任何扩展和插件的前提下进行实时音频和视频聊天。
最近工作中需要对WebRTC做一些调研,于是我计划基于WebSocke和WebRTC实现IM和视音频对话的prototype。
在html5 WebSocket出现以前,web版本的IM应用都是基于AJAX轮询的信令传输方式,这种方式的优点是调用rest接口可以实现无状态维护信令传输,server端都有成熟的jsp、php等技术框架支持;缺点不言而喻,就是网络使用浪费server负载过大等等。WebSocket的出现给web端的信令传输提供了新的道路。
WebSocket作为HTML5一种新的协议,实现了浏览器与服务器的双向通讯。在 WebSocket API 中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
我自然选择了WebSocket作为IM和WebRTC信令传输的媒介,这样就需要搭建一个支持WebSocket协议的server端。
经过一番google后发现有很多解决方案,纯C实现的opensource工程libwebsocket,Node.js实现,新版本的web服务器jetty和netty等也都对websocket提供了支持。鉴于java语言的易操作性我最终选择了jetty + java的实现。
参照这个帖子(http://www.cnblogs.com/svage/archive/2011/11/24/2262008.html)搭起了WebSocket server。需要提醒大家的是jetty版本的选择上使用11年10月左右的版本,新版本运行会出初始化错误。
先到这里吧,明天继续写~
相关资料:
http://www.cnblogs.com/svage/archive/2011/11/24/2262008.html