W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
用于實(shí)現(xiàn)小程序內(nèi)多人音視頻對(duì)話的功能。
小程序管理后臺(tái),「開發(fā)」-「接口設(shè)置」中自助開通該組件權(quán)限。相關(guān)接口 wx.joinVoIPChat 和組件 voip-room。
開發(fā)者僅需提供房間唯一標(biāo)識(shí),即可加入到指定的房間。傳入相同唯一標(biāo)識(shí)的用戶,會(huì)進(jìn)到相同的房間。為了保證前端傳入的 groupId 可信,wx.joinVoIPChat 接口要求傳入簽名。詳見下文 簽名算法。當(dāng)加入視頻房間時(shí),可結(jié)合 voip-room 組件顯示成員畫面。
生成簽名需要傳入四個(gè)參數(shù):
參數(shù)名 | 說明 |
---|---|
appId | 小游戲的 appId |
groupId | 游戲房間的唯一標(biāo)識(shí),由游戲自己保證唯一 |
nonceStr | 隨機(jī)字符串,長度應(yīng)小于 128 |
timeStamp | 生成這個(gè)隨機(jī)字符串的 UNIX 時(shí)間戳(精確到秒) |
簽名算法為:
signature = hmac_sha256([appId, groupId, nonceStr, timeStamp].sort().join(''), sessionKey)
具體來說,這個(gè)算法分為幾個(gè)步驟:
示例:
appId = 'wx20afc706a711eefc'
groupId = '1559129713_672975982'
nonceStr = '8AP6DT9ybtniUJfb'
timeStamp = '1559129714'
session_key = 'gDyVgzwa0mFz9uUP7M6GQQ=='
str = [appId, groupId, nonceStr, timeStamp].sort().join('') = '1559129713_67297598215591297148AP6DT9ybtniUJfbwx20afc706a711eefc'
signature = hmac_sha256('1559129713_67297598215591297148AP6DT9ybtniUJfbwx20afc706a711eefc', sessionKey) = 'b002b824688dd8593a6079e11d8c5e8734fbcb39a6d5906eb347bfbcad79c617'
在云開發(fā)中,無法獲取 session_key,但提供了單獨(dú)的函數(shù) cloud.getVoIPSign 來計(jì)算簽名。
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
const signature = cloud.getVoIPSign({
groupId: 'xxx',
timestamp: 123,
nonce: 'yyy'
})
return signature
}
每個(gè)房間最多同時(shí)加入 10 個(gè)人。
對(duì)于每個(gè)小程序,每天最多允許創(chuàng)建 100000 個(gè)房間。當(dāng)所有人退出房間時(shí),房間即被銷毀。此時(shí)如果傳入之前用過的 groupId 重新加入房間,會(huì)被計(jì)算為新開一個(gè)房間。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: