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