騰訊云:如何用云開發(fā)打造“萬人同屏”高并發(fā)實時互動小程序

來源:騰訊云社區(qū)
作者:騰訊云開發(fā)TCB
時間:2020-07-31
2856
剛剛過去的六月,國內游戲迷們都剛剛體驗過一場盛大的游戲發(fā)布會——2020騰訊游戲年度發(fā)布會,由于疫情的原因,今年的發(fā)布會在線上舉行,不過,得益于小程序的豐富體驗,本次發(fā)布會還是得到了游戲玩家們的認可。

剛剛過去的六月,國內游戲迷們都剛剛體驗過一場盛大的游戲發(fā)布會——2020騰訊游戲年度發(fā)布會,由于疫情的原因,今年的發(fā)布會在線上舉行,不過,得益于小程序的豐富體驗,本次發(fā)布會還是得到了游戲玩家們的認可。

0gn5al5szi.png

在發(fā)布會過程中,一個重要的環(huán)節(jié)就是跟隨著活動的進展,每個環(huán)節(jié)都會有自己的定制互動。例如和平精英環(huán)節(jié),會有和平精英專場掉落抽獎、和平精英閃現社區(qū)彈幕、議程也需要高亮和平精英模塊,如下圖:

r1dik46j1l.png

這就要求小程序能夠讓所有在觀看直播的游戲玩家同時看到抽獎、寶盒等功能,實現實時交互。

此外,也會有一些場景需要做到議程高亮同一個模塊,抽獎和閃現社區(qū)彈幕卻是不同游戲的。在對所有的功能點進行分析后,我們發(fā)現,最多需要90+開關來完成實時控制,因此,這也要求我們可以實時的對這些功能的展示進行控制。

從小程序->微信后臺->云開發(fā)(云函數)這一段公網鏈路是私有協(xié)議,不僅保障了安全性,而且提高了傳輸性能。

b3jwtuy8gg.png

在明確了訴求后,我們分析可能的實現方案:

1.接口輪詢:接口輪詢是常規(guī)操作,但在后臺需要考慮好高并發(fā)的問題的。特別是大型游戲發(fā)布會,參與的游戲玩家人數會非常多,給后臺帶來的壓力是巨大的。

2.json文件輪詢——在發(fā)布系統(tǒng)更新發(fā)布包含當前環(huán)節(jié)信息的json,小程序輪詢方式請求json文件。但這個方案頁面反應不夠及時,壓力也從后臺轉移到了當天負責更新json文件的同學身上。

3.云開發(fā)數據庫的實時數據推送——小程序原生能力,開箱即用,無需管理長連,無需編寫服務端代碼,無需搭建和管理基礎設施,自動收到更新推送。

綜合評估,認為還是使用云開發(fā)數據庫的實時數據推送更好,簡單易上手,也是小程序的原生能力。調研發(fā)現云開發(fā)的watch給到每個用戶的最大限制連接數是5萬,而我們預估活動當天的DAU超過限制,因此,聯(lián)系了云開發(fā)的同事進行擴容,將限制提高,并進行了壓測,確保不出問題。事實上在活動整個過程,甚至是峰值都毫無壓力,輕松扛過用戶請求。

使用云開發(fā)數據庫的實時數據推送讓整個開發(fā)變得十分簡單,只需要一個API——watch就足以完成所有的開發(fā)。小程序可以通過watch實時監(jiān)聽數據庫變更,在收到包含更新內容的推送后,做出相應的實時響應。

1be53lyjag.png

在具體的實現方面,也十分簡單,可以參考我們的代碼進行操作。

我們將相關的監(jiān)聽代碼進行了封裝,方便在不同情況下調用。如果你有一些特定場景下才執(zhí)行操作的邏輯,可以直接在watch的onChange回調中調用進行。

1596162728(1).png

并在合適的地方設置開始監(jiān)聽,在頁面onshow的時候開始監(jiān)聽,onhide的時候關閉監(jiān)聽,這樣既不浪費監(jiān)聽數,也能盡量避免計劃外的操作導致watch斷連后無法重新連接。

1596162757(1).png

通過這樣的邏輯,我們實現了管理員在發(fā)布會環(huán)節(jié)開始才放開彈幕互動入口:

5k098kgzi3 (1).gif

議程有抽獎,才會出現抽獎入口,并且展示的是提供當前抽獎環(huán)節(jié)獎品的產品logo:

drkldi4qzu.gif

主持人口播“查看Spark幸運鵝中獎結果吧!”的時候,會全屏彈窗展示中獎名單,充滿儀式感!

i6949ikgqf.gif

發(fā)布會或者線下項目必須要考慮周全,都是一次性短時間高并發(fā)活動,沒有機會給你查漏補缺。所以我們還給watch想了個備案,監(jiān)聽失敗(onError)的時候就用上面提到的第2個方案開始每秒輪詢同步更新的json文件,json里的數據和結構跟watch的一樣,所以整體交互流程方面是不需要做額外修改的。結果也證明云開發(fā)數據庫的watch是非??孔V的,輪詢都沒有用上。

071l5fr8mt.png

作為承載騰訊游戲年度發(fā)布會首次線上舉辦、首次TOC、首次進行實時互動的小程序,它也算是良好的完成了自己的任務。

特別要感謝騰訊云和小程序提供的好用、易用、靠譜的實時數據推送能力watch,讓我們的創(chuàng)意能更好的落地

立即登錄,閱讀全文
原文鏈接:點擊前往 >
文章來源:騰訊云社區(qū)
版權說明:本文內容來自于騰訊云社區(qū),本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家