維基百科對(duì)信令的定義:信令,是指為使通信網(wǎng)中各種設(shè)備協(xié)調(diào)運(yùn)作,在設(shè)備之間傳遞的有關(guān)控制信息, 更通俗的來說 , 信令是為了解決一些 “網(wǎng)絡(luò)控制”問題,比如常見的電話呼叫、接聽(接受)、掛斷。以前面電話的列子展開來講,當(dāng) A 撥通 B 的電話,其實(shí)就是 A 給 B 發(fā)送了一個(gè)呼叫信令,而當(dāng) B 接聽時(shí),B就給 A 發(fā)送了一個(gè)接聽(接受)信令,但后面兩人的通話過程就不屬于信令的范疇了,最后 B 結(jié)束通話時(shí),需要一個(gè)斷的操作,也就自然對(duì)應(yīng)于掛斷信令。
前面信令的定義是非常學(xué)術(shù)化的,并且也非常傳統(tǒng)。從互聯(lián)網(wǎng)產(chǎn)品的角度來看,信令是可以”好玩“的。在產(chǎn)品領(lǐng)域,信令可以用在音視頻通話、互動(dòng)直播 、互動(dòng)娛樂、在線教育等諸多行業(yè),而其對(duì)應(yīng)的具體場(chǎng)景更是豐富多彩,例如:音視頻呼叫/邀請(qǐng)、彈幕、禮物、主播權(quán)限控制、游戲同步、白板、IoT控制消息……
2、實(shí)現(xiàn)信令有哪些技術(shù)難點(diǎn)
信令的核心技術(shù)要素主要是以下2點(diǎn):
- 網(wǎng)絡(luò)傳輸?shù)目煽啃约皶r(shí)性:
信令的核心是要實(shí)現(xiàn)控制消息的到達(dá)和接收,信令消息的丟失會(huì)直接導(dǎo)致控制動(dòng)作的失效,因此信令本身的可靠性就顯得非常重要。其中牽扯到的技術(shù)點(diǎn)非常之多,例如信令本身的產(chǎn)品架構(gòu)、發(fā)送接收機(jī)制、核心的TCP 長(zhǎng)連接及其;顔栴}都是非常復(fù)雜且細(xì)致的技術(shù)點(diǎn)。
- client 的到達(dá)率:
在解決了網(wǎng)絡(luò)問題后,下一步就是如何保證 client 實(shí)時(shí)在線或及時(shí)上線的問題。這一步有兩種方案,一是盡量保持 client 在線,這樣就能實(shí)時(shí)收到信令消息,二是,如果 client 不在線,如何讓它及時(shí)上線并收取信令消息,這兩種方案不是非此即彼的,而是相互補(bǔ)充的。
如今市面上有很多提供信令服務(wù)的SDK,但是在可靠性及易用性差距很大。可靠性差的產(chǎn)品會(huì)直接影響通話的接通率和控制信令的到達(dá)率,進(jìn)而影響產(chǎn)品的轉(zhuǎn)化和終端用戶的體驗(yàn)。
3、云信信令的核心功能
網(wǎng)易云信的信令SDK是19年6月新推出的信令通道產(chǎn)品。云信信令SDK以頻道為基礎(chǔ),將各個(gè)元素有機(jī)并靈活的整合在一起。以創(chuàng)建頻道為起點(diǎn),后面還有加入頻道、邀請(qǐng)、接受/拒絕邀請(qǐng) 退出/關(guān)閉頻道,提供豐富和靈活的接口,方便應(yīng)用于各種場(chǎng)景。
核心接口如下:
功能 |
接口 |
create |
創(chuàng)建頻道 |
join |
加入頻道 |
invite |
邀請(qǐng)他人加入頻道 |
acceptInvite |
接受對(duì)方邀請(qǐng) |
sendControl |
發(fā)送自定義命令 |
leave |
離開頻道 |
close |
關(guān)閉頻道 |
核心流程可參考下圖:
4、云信信令的技術(shù)優(yōu)勢(shì)
云信信令是建立在云信多年豐富的IM技術(shù)積累之上的,具有以下特點(diǎn):
- 消息到達(dá)率高達(dá)100% ,保證消息不丟失,因?yàn)檎麄(gè)信令沿用了云信即時(shí)通信技術(shù)的架構(gòu)和經(jīng)驗(yàn);
- 支持可以配置的離線及在線通知,同時(shí)集成了強(qiáng)大的推送功能(支持Android廠商推送);
- 接口設(shè)置簡(jiǎn)潔且豐富;
- 在Android 端做了很多進(jìn)程;畹墓ぷ鳎
云信服務(wù)端具有良好的架構(gòu)及設(shè)計(jì)以實(shí)現(xiàn)消息的可靠、及時(shí)、安全,詳情可以參考云信信令服務(wù)端相關(guān)文檔。在服務(wù)端的強(qiáng)大加持下,端上的可靠性和及時(shí)性顯得尤其重要。因此云信在這方面做了非常多的工作,這里以Android 為例,簡(jiǎn)述下云信在各個(gè)方面的優(yōu)優(yōu)勢(shì)。
- 云信基于二進(jìn)制設(shè)計(jì)了一套高效且安全的私有協(xié)議,這套協(xié)議的冗余數(shù)據(jù)非常的少,這樣能極大的增加網(wǎng)絡(luò)傳輸效率。同時(shí)云信還對(duì)協(xié)議中的數(shù)據(jù)進(jìn)行了加密,二進(jìn)制+加密的組合保證了數(shù)據(jù)100%安全。
- 云信的網(wǎng)絡(luò)通訊使用的是TCP 長(zhǎng)連,一次連接多次復(fù)用,節(jié)約了大量的TCP建連時(shí)間,同時(shí)設(shè)計(jì)了相配套長(zhǎng)連 的心跳策略以保證連接的穩(wěn)定性。
- 為了保證消息的及時(shí)性,云信還在Android 平臺(tái)上做了一系列的進(jìn)程;畲胧,包括輕量進(jìn)程+雙進(jìn)程 、 雙服務(wù)、JobScheduler、Alarm…這些措施并非各自獨(dú)立,而是相互影響,有序合理的結(jié)合在一起,以盡量保證進(jìn)程的存活。
- 隨著Android 版本的升級(jí),系統(tǒng)對(duì)應(yīng)用限制越來越嚴(yán)格,在這種背景下,云信支持了主流廠商的推送,包括小米、華為、VIVO、魅族,以后還會(huì)根據(jù)實(shí)際情況支持更多的推送。云信支持了這么多的推送,并不會(huì)影響APK的包體積,所有推送都是按需集成,做到了高度可訂制化。更方便的是,用戶集成這些推送的同時(shí)不會(huì)影響自己業(yè)務(wù)中其他與云信無關(guān)的推送。以小米推送為例,如果用戶原來就有小米推送的業(yè)務(wù),那么只要按照云信的文檔配置一下小米的相關(guān)信息,并簡(jiǎn)單的修改下業(yè)務(wù)代碼,就能使小米推送即能推送云信的相關(guān)消息,又不影響用戶的自己業(yè)務(wù)中的推送。
云信服務(wù)端還通過以下優(yōu)勢(shì)保證信令必達(dá):
- 安全穩(wěn)定:基于私有二進(jìn)制TCP協(xié)議,RSA+RC4加密,安全穩(wěn)定送達(dá)每一條信令;
- 信令消息必達(dá):在線設(shè)備實(shí)時(shí)送達(dá),離線設(shè)備推送喚醒;離線消息、推送消息、離線會(huì)話,確保每條信令第一時(shí)間送達(dá);
- 高并發(fā):水平擴(kuò)展,自動(dòng)擴(kuò)縮容,支持千萬級(jí)并發(fā);
- 智能網(wǎng)絡(luò)調(diào)度:自建IDC機(jī)房,優(yōu)質(zhì)國(guó)內(nèi)/海外專線;國(guó)內(nèi)/國(guó)外/小運(yùn)營(yíng)商,信令暢通無阻。
現(xiàn)在網(wǎng)易云信支持免費(fèi)接入信令SDK,不限制用戶賬號(hào)數(shù)量,降低使用成本,助力業(yè)務(wù)快速成長(zhǎng)!趕快免費(fèi)接入吧!