轉自:http://demo.netfoucs.com/jrn1012/article/details/41982971java
最近應項目組要求研究了下WebRTC(目前支持Firefox和Chrome),WebRTC,名稱源自網頁實時通訊(Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,是谷歌2010年以6820萬美圓收購Global IP Solutions公司而得到的一項技術。WebRTC使得開發者在瀏覽器無需安裝任何插件就能夠實現語音視頻通訊。node
爲了將近期成果作個總結,決定寫一個"Web即時通信「的專題,由於WebSocket是WebRTC的基礎,WebSocket爲WebRTC負責客服端發現和數據轉發,(由於WebSocket是一項「服務器推」技術,若是想更深刻了解這方面的技術,可參考博文Comet:基於 HTTP 長鏈接的「服務器推」技術 )。基本上能實現WebSocket,就能實現WebRTC(瀏覽器支持方面有差別,目前IE10以上瀏覽器、Opera/Firefox/Chrome支持WebSocket,但各版本IE不支持WebRTC),mysql
因此先從WebSocket開始。目前大部分實現WebSocket有三種方式,分別是使用Node.js、tomcat七、spring4。下面將逐一介紹。git
1、使用Node.js做爲信令服務器實現WebRTCgithub
經過收集整理網上資料發現,大部分WebRTC信令服務器使用Node.Js(若是不清楚WebRTC相關技術術語,請自行學習初探WebRTC這篇文章不錯,有圖有真相
), 下面列出三個經本人測試可用的Demo,(下載地址爲WebRTC Demo)。 其中第三個demo是根據博文最簡單的WebRTC示例 整理而來的。web
以第三個demo爲例,安裝完NodeJS後,使用node server.js啓動信令服務器。就能夠Chrome上分別輸入http://127.0.0.1:3000和http://127.0.0.1:3000#true測試了。spring
Node.js作信令服務器代碼少,測試比較方便,這方面的DEMO也特別多。sql
2、使用Tomcat7做爲WebSocket數據轉發服務器數據庫
有博友用Tomcat7作WebSocket數據轉發服務器,實現了相似WebQQ的在線聊天室,詳見博文基於Tomcat七、Java、WebSocket的服務器推送聊天室 後續的WebRTC視頻聊天沒有涉及,不過應該能夠實現,本人沒有去實驗。瀏覽器
這類實現方式和特定的服務器有關,系統部署到其餘應用服務器如WebLogic,Jetty等,可能功能就會失效。因此使用該種方式實現須要考慮清楚。
3、使用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實現文字聊天)。