本發明涉及計算機通信領域,更具體地說,涉及基于WebRTC的DataChannel技術實現即時消息IM的方法及系統。
背景技術:
WebRTC(Web Real-Time Communication,實時通信),是一個基于瀏覽器的實時多媒體通信技術。該項技術旨在使 Web 瀏覽器具備實時通信能力,同時,通過將這些能力封裝并以 JavaScript API 的方式開放給 Web 應用開發人員,使得 Web 應用開發人員能夠通過 HTML 標簽和 JavaScript API 快速地開發出基于 Web 瀏覽器的實時音視頻應用,而無需賴任何第三方插件。本文提及的能夠進行WebRTC通信的終端稱為WebRTC終端。這樣WebRTC技術使得支持WebRTC功能的瀏覽器之間可以進行直接的Web通信,從而改變了終端瀏覽器與服務器原有的Client/Server工作模式,可以讓Web進行端對端通信,是對Web技術的一大創新。WebRTC終端采用流控制傳輸協議SCTP(Stream Control Transmission Protocol)作為數據的傳輸協議,該協議可以對傳輸數據進行流量控制和擁塞控制。
該項技術將 Web 瀏覽器打造成一個適用于在所有用戶設備,比如移動智能終端和個人電腦等之間,進行實時的音視頻和數據通信的通用平臺。在本本發明的說明中,我們僅關注數據通信部分。
IP多媒體子系統(IP Multimedia Subsystem,IMS)是一種基于IP網絡支持多媒體業務的網絡架構,采用SIP會話初始協議(Session Initiation Protocol)進行端到端的呼叫控制,符合SIP協議的終端稱為SIP終端。SIP終端可以通過SIP Message方法進行即時消息傳遞。
在VoIP系統中,已經部署了很多SIP終端,而新增加的WebRTC終端與SIP終端間可以進行語音和視頻通信,對于即時消息的傳遞無法實現。它們之間需要一個中轉服務器來實現兩個網絡的數據承載協議和數據的加密/解密等的轉換,從而實現WebRTC終端和SIP終端即時消息的互通。
兩個WebRTC終端間的即時消息的傳遞,需要借助一個信令服務器來完成的。信令服務器為兩個WebRTC之間的DataChannel的建立提供了一個橋梁,通過該信令服務器,雙方交互SDP信息,最終,使得兩個WebRTC終端建立端對端的DataChannel連接,通過該DataChannel通道,它們就可以相互發送可靠的、加密的即時消息。
技術實現要素:
本發明的目的在于實現一種基于WebRTC技術即時消息的通信方法,可以集信令服務器與中轉服務器為一體的服務端,為WebRTC終端與SIP終端發送即時消息提供了一種方法及系統。
為了實現上述發明目的,本發明的技術方案如下:
一種基于WebRTC技術即時消息的通信方法,可以實現WebRTC終端和SIP終端之間的即時消息通信,該通信方法主要包括以下步驟: WebRTC終端進行ICE收集地址,并將攜帶ICE候選地址的offer SDP發送給服務器;服務器解析SDP,當發現被請求方為SIP終端時,服務器啟動中轉服務功能,產生攜帶ICE候選地址的answer SDP回應WebRTC終端的請求,并產生新的offer SDP給SIP終端; WebRTC終端與服務器建立DataChannel通道的連接; WebRTC終端通過SIP Session機制向SIP終端發送即時消息。
優選的,上述通信方法還包括:WebRTC終端與所述服務器間,需要進行ICE校驗,來驗證ip、port的連通性。
優選的,上述通信方法中,服務器會將SCTP加密的消息解密后,通過SIP Session機制將所述即時消息發送給SIP終端。
優選的,上述通信方法還包括:WebRTC終端與SIP終端均注冊到服務器。
優選的,在實現通信方法過程中,SIP終端只需要注冊到服務器即可,可工作在不接通電話狀態,也可工作在接通電話狀態。
優選的,上述通信方法中,,服務器會將未加密的SIP消息加密后,再通過DataChannel發送給WebRTC終端。
優選的,上述通信方法還包括:SIP終端與服務器建立語音連接通路。
優選的,上述通信方法還包括:在服務器內部將SIP終端的RTP數據包解析處理,再通過語音識別模塊將SIP終端的語音轉化為文字信息,最后通過DataChannel通道將即時的文字信息發送到WebRTC終端。
優選的,上述通信方法還包括:WebRTC終端將文字信息通過SCTP協議發送給服務器,服務器對SCTP加密的消息進行解密。
優選的,上述通信方法還包括:服務器通過語音識別模塊將文字信息轉化為語音數據,再通過所述語音連接通路發送給所述SIP終端。
此外,本發明還提供一種基于WebRTC技術即時消息的通信方法,可以實現SIP終端作為請求方向WebRTC終端建立通信,其特征在于,所述通信方法主要包括以下步驟:
所述SIP終端向所述WebRTC終端撥打電話,所述SIP終端首先發送請求信令給服務器;所述服務器會將收集ICE地址,并重新填充攜帶所述ICE候選地址的offer SDP發送給所述WebRTC終端;所述WebRTC終端收到offer后,產生攜帶ICE候選地址的answer SDP回應所述服務器;在所述服務器與所述WebRTC終端間建立DataChannel通道,在所述SIP終端與服務器間建立普通的SIP session;所述服務器內部將所述SIP終端的RTP數據包解析處理,再通過語音識別模塊將所述SIP終端的語音轉化為文字信息,最后通過所述DataChannel通道將即時的文字信息發送到所述WebRTC終端;所述服務器通過語音識別模塊將文字信息轉化為語音數據,再通過所述語音連接通路發送給所述SIP終端。
本發明一種基于WebRTC技術即時消息的通信方法,可以為正在進行的語音會話、視頻會話或會議提供即時消息的功能,給音視頻通信增加即時消息的數據通信功能,也可以創建獨立的DataChannel通道,無需音頻或者視頻通信,大大拓展了現有應用模式,極大豐富了用戶多樣化的選擇。
附圖說明
圖1為本發明具體實施例一示意圖;
圖2為本發明具體實施例一的信令交互示意圖;
圖3為本發明具體實施例二示意圖;
圖4為本發明具體實施例二的信令交互示意圖;
圖5為本發明具體實施例三示意圖;
圖6為本發明具體實施例中信令/中轉服務器內部結構圖。
具體實施方式
本發明的基本原理:基于WebRTC的DataChannel技術實現即時消息IM通信的方法及系統,在兩個WebRTC終端間通過信令服務器建立端對端的DataChannel連接。而在WebRTC終端與SIP終端之間,通過中轉服務器將即時消息加密或者解密,然后SCTP與SIP協議間轉換實現兩個不同終端間的即時消息技術。本發明方案可為WebRTC終端間提供即時消息的功能,也可為WebRTC終端與SIP終端提供中轉即時消息的功能。
為了更清楚地說明本發明實例的技術方案,下面將結合示例圖對本發明的實施進行詳細的介紹,下面的描述僅僅是本發明的一些實施例。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些實施例獲得本發明的其他實施方式。
具體實施例一是本發明具體實施例中兩個WebRTC終端間的DataChannel連接的實施方案。圖1為本發明具體實施例一示意圖。圖2為本發明具體實施例一的信令交互示意圖。參考圖1和圖2,我們可知,其中文中提及的信令服務器在這里也是我們的UCM,該UCM僅僅為WebRTC終端的分機提供信令通道的功能,不會參與到即時消息的傳遞的環節。
兩個WebRTC終端均注冊到信令服務器中,其中,一個WebRTC終端可以向另一個WebRTC終端請求DataChannel連接。
首先,請求方會調用WebRTC模塊的PeerConnection接口,創建出peerconnection對象,接著調用該對象的createDataChannel方法創建一個DataChannel。
然后,請求方WebRTC終端開始收集ICE候選地址,當系統中部署了stun server時,會向stun server發送binding請求,獲取WebRTC終端的公網地址。當完成了ICE地址收集后,會將攜帶著ICE候選地址的offer SDP發送給信令/中轉服務器,接著服務器會將該SDP透傳給被請求方WebRTC終端。
被請求方WebRTC終端會產生攜帶著ICE候選地址的answer SDP,發送給信令/中轉服務器,接著服務器會將該SDP透傳給請求方WebRTC終端。
當請求方WebRTC終端收到answer SDP后,會跟被請求方進行ICE校驗,來驗證SDP協商的UDP端口是否可用,如果可以使用,則會在兩個WebRTC終端間建立DataChannel通道。
最后,任意一方WebRTC終端可以給另一方發送即時消息。
在本發明具體實施例中提及的信令/中轉服務器均特指的是UCM,它既做信令服務器,也做中轉服務器。它做信令服務器時,對WebRTC和SIP終端發來的信令進行解析,并做相應的動作;它做中轉服務器時,承擔音視頻和消息的網關服務功能,對WebRTC終端和SIP終端的消息進行加密、解密等工作。
具體實施例二是本發明具體實施例中WebRTC終端向SIP終端請求即時消息功能的實施方案。圖3為本發明具體實施例二示意圖。圖4為本發明具體實施例二的信令交互示意圖。參考圖3和圖4,可知此時方案主要包括以下一些實現操作:
WebRTC終端與SIP終端均注冊到信令/中轉服務器。
WebRTC終端完成ICE收集地址后,將攜帶ICE候選地址的offer SDP發送給信令/中轉服務器,由其解析SDP,發現被請求方為SIP終端。
此時,信令/中轉服務器需要中轉服務器的功能,產生攜帶ICE候選地址的answer SDP回應請求WebRTC終端;并產生新的offer SDP發送給SIP終端;
在WebRTC終端與信令/中轉服務器間,需要進行ICE校驗,來驗證IP、PORT的連通性。
完成ICE校驗后,在WebRTC終端與信令/中轉服務器間建立了DataChannel通道的連接。
在SIP終端與信令/中轉服務器間,就是普通的SIP Session。
當WebRTC終端向SIP終端發送即時消息時,信令/中轉服務器會將SCTP加密的消息解密后,通過SIP Session機制發送給SIP終端。此時的SIP終端只需要注冊到信令/中轉服務器即可,可工作在不接通電話狀態,也可工作在接通電話狀態。SIP Session的消息機制中, SIP終端可以在語音連接通路時,通過SIP Session的消息機制與UCM傳輸文字信息;也可以在未打通語音電話時,通過SIP Session的消息機制與UCM互傳文字信息
當SIP終端向WebRTC終端發送即時消息時,信令/中轉服務器會將未加密的SIP消息加密后,再通過DataChannel發送給WebRTC終端。
在WebRTC終端與SIP終端的即時消息功能中,需要信令/中轉服務器對數據承載協議和加密類型等進行轉換。
同理,SIP終端也是可以向WebRTC終端請求即時消息功能的實施。
具體實施例三是本發明具體實施例中SIP終端與WebRTC終端實現語音與消息交互的實施方案。圖5為本發明具體實施例三示意圖。此時方案主要包括以下一些步驟來實現操作:
WebRTC終端與SIP終端均注冊到信令/中轉服務器。
該方案的注冊與ICE候選地址收集流程與具體實施例二相同,同時在完成ICE校驗后,在WebRTC終端與信令/中轉服務器間建立了DataChannel通道連接。
在SIP終端與信令/中轉服務器間,就是普遍的SIP會話。
而與具體實施例二不同的是,具體實施例三這邊的SIP終端必須打通與信令/中轉服務器的語音通話,也就是說要建立audio RTP語音連接通路。在信令/中轉服務器內部將SIP終端的RTP數據包解析處理,再通過語音識別模塊將SIP終端的語音轉化為文字信息,最后通過DataChannel模塊通道將即時的文字信息發送到WebRTC終端。圖6為本發明具體實施例中信令/中轉服務器內部結構圖。如圖所示,在本發明具體實施例三中,信令/中轉服務器內部包括:信令處理模塊、加密/解密模塊、橋接模塊、語音識別模塊、WebRTC DataChannle模塊、SIP模塊,其中語音識別模塊用于實現上述語音轉化文字功能。
而在WebRTC終端可以將文字信息通過SCTP協議發送給信令/中轉服務器,在信令/中轉服務器這邊先對SCTP加密的消息進行解密,再通過語音識別模塊將文字信息轉化為語音數據,通過audio RTP發送給SIP終端。
這樣,就可以實現SIP終端與WebRTC終端的消息與語音的實時交互。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。