半年前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