轉自: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實現文字聊天)。