Polyv Help Center

Help Center

task_doc

Updated: 2025-06-17 22:18:09

Frontend Documentation

1. Obtain Chat Room Socket Instance

Overview: Based on the viewing page SDK open-source project version 0.11.0 as an example. Other versions can also refer to this method to obtain the socket instance. The chat room EVENT events introduced in this document are not encapsulated by the viewing page SDK, so the code example below must be used for sending and listening. Other encapsulated chat room EVENTS can be found in the Help Center -> Chat Room Module documentation or the open-source project.

// [获取聊天室 socket 实例](https://help.polyv.net/index.html#/live/js/new_sdk/live_watch_sdk/articles/modules/chat/chat-message?id=classmethoddoc_plvchatmodule_getsocket "获取聊天室 socket 实例")
// 代码示例
import { getWatchCore } from '@/core/watch-sdk';
const watchCore = getWatchCore();

2. Send Chat Room Event (TASK_STATUS)

Overview: The frontend actively queries the task progress status.

// 代码示例 (建议30S调用一次)
const jsonData = {
    EVENT: 'TASK_STATUS',
};
watchCore.chat.getSocket().emit('interactEvent', JSON.stringify(jsonData), (data: string) => {
    const taskStatusData = JSON.parse(data)
    console.warn('interactEvent-TASK_STATUS接收回调', taskStatusData);
    /**
       * @socket {callback} <interactEvent> TASK_STATUS
       * 获取任务状态
       * @returns {object} taskStatusData
       * @returns {object[]} taskStatusData.taskStatus
       * @returns {string} taskStatusData.taskStatus[].taskId 任务id
       * @returns {?number} taskStatusData.taskStatus[].onlineTime 已在线在线时长(单位:毫秒)
       * @returns {?number} taskStatusData.taskStatus[].signCount 已完成签到次数
       * @returns {boolean} taskStatusData.taskStatus[].isDone 是否达成
       * @returns {?number} taskStatusData.taskStatus[].speakCount 发言次数
       * @returns {?string} taskStatusData.taskStatus[].payload 自定义参数
       * @returns {string} taskStatusData.taskStatus[].activityId 活动id
       */
});

3. Listen to Chat Room message Type (onSliceID)

// 代码示例
watchCore.chat.getSocket().addEventListener('message', (data: string)=> {
  const objData = JSON.parse(data)
    
  // 后进入直播间的观众触发
  if(objData.EVENT === 'onSliceID') {
    console.warn('onSliceID', objData)
    /**
     * @socket {on} <message> onSliceID
     * 监听onSliceID事件
     * @returns {...}
     * @returns {?object} objData.data.listenInteractEventPayload或listenInteractEventPayloadForCustomTask 监听互动事件的数据,表示正在监听中。创建任务监听时,存在callbackUrl则为listenInteractEventPayloadForCustomTask。;否则为listenInteractEventPayload
     */
  }
})

4. Listen to Chat Room interactEvent Type (START_LISTEN, TASK_DONE, END_TASK, REMOVE_TASK)

// 代码示例
watchCore.chat.getSocket().addEventListener('interactEvent', (data: string)=> {
  const interactData = JSON.parse(data)

  // 先进入直播间的观众触发
  if(interactData.EVENT === 'START_LISTEN') {
    console.warn('START_LISTEN', interactData)
    /**
     * @socket {on} <interactEvent> START_LISTEN
     * 开始监听互动事件
     * @returns {object} interactData
     * @returns {string} interactData.type 互动类型,'inAndOut' | 'sign' | 'speak' | 'parent'
     * @returns {?string} interactData.activityId 活动id
     * @returns {?Array} interactData.userTags 用户标签
     */
  }

  // 完成任务触发
  if(interactData.EVENT === 'TASK_DONE') {
    console.warn('TASK_DONE', interactData)
    /**
     * @socket {on} <interactEvent> TASK_DONE
     * 完成任务
     * @returns {object} interactData
     * @returns {string} interactData.EVENT TASK_DONE
     * @returns {string} interactData.taskId 任务ID
     * @returns {string} interactData.activityId 活动ID
     * @returns {string} interactData.roomId 房间ID
     * @returns {string} interactData.taskType 任务类型,speakCount、signCount、onlineTime等
     * @returns {object} interactData.taskData 任务数据
     */
  }

  // 任务结束触发
  if(interactData.EVENT === 'END_TASK') {
    console.warn('END_TASK', interactData)
    /**
     * @socket {on} <interactEvent> END_TASK
     * 任务结束通知
     * @returns {object} interactData
     * @returns {string} interactData.EVENT END_TASK
     * @returns {string} interactData.taskId 任务ID
     * @returns {string} interactData.activityId 活动ID
     */
  }

  // 任务删除触发
  if(interactData.EVENT === 'REMOVE_TASK') {
    console.warn('REMOVE_TASK', interactData)
    /**
     * @socket {on} <interactEvent> REMOVE_TASK
     * 任务删除通知
     * @returns {object} interactData
     * @returns {string} interactData.EVENT REMOVE_TASK
     * @returns {string} interactData.taskId 任务ID
     * @returns {string} interactData.activityId 活动ID
     */
  }
})

5. Check-in Success Callback

/**
 *	checkInSdk.events.SIGN_IN  开始签到
 *	checkInSdk.events.SIGN_IN_SUCCESS 签到成功
 *	checkInSdk.events.SIGN_IN_FINISH 签到限时结束
 *	checkInSdk.events.STOP_SIGN_IN 讲师结束签到
 *	checkInSdk.events.SIGN_IN_FAIL 签到失败
**/
// 1、在开源项目中找到文件src\components\page-watch-common\interactive-receive\check-in\hooks\use-check-in.ts
// 2、改动参考如下
const signInSuccess = () => {
   console.warn('签到成功')
   beforeRemoveCheckInEntrance()
}

onBeforeMount(() => {
   ...
   checkInSdk.on(checkInSdk.events.SIGN_IN_SUCCESS, signInSuccess);
});

onBeforeUnmount(() => {
   ...
   checkInSdk.off(checkInSdk.events.SIGN_IN_SUCCESS, signInSuccess);
});

6. Listen to Chat Room customMessage Type (Winning Broadcast Notification)

// 代码示例
watchCore.chat.getSocket().addEventListener('customMessage', (data: string)=> {
    console.warn('customMessage', data);
});

Backend Documentation

7. Create Interaction Listener Event

Create Interaction Listener Event

8. Delete Interaction Listener Event

Delete Interaction Listener Event

1、END_TASK下发会带上任务id或活动id。
2、删除会发送 REMOVE_TASK 事件

9. Broadcast Winning Message API

Concurrency Limit: Within 1 second, the total length of all requested userIds must not exceed 80,000.

Broadcast Message by User ID

10. Broadcast Draw Result API

Send Custom Message

联系客服,在线咨询