保利威文档中心

幫助中心

聊天室搶答功能說明

更新時間:2022-05-23 14:27:50

聊天室搶答功能說明

主要說明聊天室搶答功能在觀看端以及講師端如何使用。

1、連接聊天室時,需要帶上 token 和 version 參數。

點擊取得 token 說明文件

聊天室連接說明:

io.connect('ws://chat.polyv.net', {
    'query': {
        version: '2.0', // version必须大于等于2.0
        token, // token通过接口获取,看上面的链接
    },
    'transports': ['websocket']
});

2、監聽開始搶答事件

  • START_ANSWER_QUICKLY
參數說明
參數名稱 參數說明 參數類型
EVENT 事件名稱,值為 START_ANSWER_QUICKLY string
limitTime 搶答時間 number
sessionId 該場直播的 sessionId string
timestamp 發起搶答時的時間戳 number
quicklyId 搶答的 id string
overTime 搶答剩餘時間 number
範例
socket.on('message', function(jsonData, callback) {
    const data = JSON.parse(jsonData);
    if(data.EVENT === 'START_ANSWER_QUICKLY') {
        // 执行相关操作
    }
})

3、學員提交搶答資訊

  • SUBMIT_ANSWER_QUICKLY
參數說明
參數名稱 參數說明 參數類型 是否必填
EVENT 事件名稱,寫死 SUBMIT_ANSWER_QUICKLY string
quicklyId 搶答 id string
useTime 搶答使用的時間 number
organization 學員所屬機構 string
範例
// 需要发送的参数,为json字符串
const sendData = JSON.stringify({
    EVENT: 'SUBMIT_ANSWER_QUICKLY',
    quicklyId: '436499f0-17d9-11ea-9ba9-6f8eb568fbcb',
    useTime: 2
});
socket.emit('message', sendData , function(d) {
    const { code, message } = JSON.parse(d); // code 为 请求结果状态
    if (code === 200) {
        console.log('抢答成功');
    } else {
        console.log(`抢答失败,失败原因:${message}`)
    }
});

4、取得搶答狀態

開始搶答時,各個端收到 socket 訊息的時間可能不同,例如 PC 端比行動端先收到開始搶答的 socket,這時時間就會產生偏差。所以需要不斷從伺服器取得搶答的剩餘時間,以確保時間準確性。

  • 建議每秒取得一次。

  • GET_ANSWER_QUICKLY_STATUS

參數說明
參數名稱 參數說明 參數類型
EVENT 事件名稱,寫死 GET_ANSWER_QUICKLY_STATUS string
範例
    socket.emit(
        'message',
        JSON.stringify({EVENT:'GET_ANSWER_QUICKLY_STATUS'}),
        function(d) {
            const { code, data, message } = JSON.parse(d);
            if (code === 200) {
                const { overTime, answerNum } = data; // overTime为抢答剩余时间,answerNum为已抢答人数
            } else {
                console.log(`获取抢答状态失败,失败原因:${message}`)
            }
        }
    )

5、講師端發送開始搶答事件

講師在推流端點擊搶答圖示,彈出視窗,輸入時間,點擊開始搶答。

  • START_ANSWER_QUICKLY
參數說明
參數名稱 參數說明 參數類型
EVENT 事件名稱,寫死 START_ANSWER_QUICKLY string
limitTime 搶答的時間 number
sessionId 該場直播的 sessionId(如果只是測試,可以傳入隨機字串) string
範例
socket.emit('message', JSON.stringify({
    EVENT: 'START_ANSWER_QUICKLY',
    limitTime: 30,
    sessionId: 'test'
}), function(d) {
    const { code, message } = JSON.parse(d);
    if (code === 200) {
        console.log('发起抢答成功');
    } else {
        console.log(`发起抢答失败,失败原因:${message}`);
    }
});

6、結束搶答

講師發起搶答後,頁面上有個停止搶答按鈕,講師可以主動提前停止搶答

  • STOP_ANSWER_QUICKLY
參數說明
參數名稱 參數說明 參數類型
EVENT 事件名稱,寫死 STOP_ANSWER_QUICKLY string
quicklyId 搶答 id string
範例
socket.emit('message', JSON.stringify({
    EVENT: 'STOP_ANSWER_QUICKLY',
    quicklyId: 'test',
}), function(d) {
    const { code, message } = JSON.parse(d);
    if (code === 200) {
        console.log('抢答停止成功成功');
    } else {
        console.log(`抢答结束失败,失败原因:${message}`);
    }
});
联系客服,在线咨询