witsWITS
Docs

Quiz Websocket


Users can join the quiz competition as spectator or participant (after enrolling) by connecting to the websocket.

import { QuizWebSocketHandler, createClientAPI } from "wits-client"

const clientAPI = createClientAPI({
  jwtToken: "",
  appId: "",
})

const quiz = await clientAPI.GET("/v2/quiz/competitions/{id}/", {
  params: { path: { id: 1 } },
})

const quizClient = new QuizWebSocketHandler(
  {
    jwtToken: "",
    reconnect: true,
    pingInterval: 5000,
  },
  quiz.data,
)

Then you can register the events.

Events


On Question message

import { QuestionWithoutIsCorrect } from "wits-client"

const callback = ({ question }: { question: QuestionWithoutIsCorrect }) => {}

quizClient.onNewQuestion(callback)

quizClient.offNewQuestion(callback)

On Stats Update

import { QuizStatsData } from "wits-client"

const callback = ({ data }: { data: QuizStatsData }) => {}

quizClient.onQuizStats(callback)

quizClient.onQuizStats(callback)

On Ping update

const callback = () => {
  const updatedPing = quizClient.wsClient.getStatus().ping
}

quizClient.onPingUpdate(callback)

quizClient.offPingUpdate(callback)

On Correct Answer Broadcast

After each question time is finsihed, the correct answer will be broadcasted to show the correct answer.

import { CorrectAnswerBroadcastData } from "wits-client"

const callback = ({ data }: { data: CorrectAnswerBroadcast }) => {
  const updatedPing = quizClient.wsClient.getStatus().ping
}

quizClient.onCorrectAnswerBroadcast(callback)

quizClient.offCorrectAnswerBroadcast(callback)

Select user's selected answer

quizClient.sendSelectAnswer({
  questionId: -1,
  selectedChoiceId: -1,
})

Request Hint

When a hint button is pressed, call this function to request a hint.

quizClient.requestHint({
  hintId: -1,
  hintType: "fifty",
  questionId: -1,
})

Hint Response

The response of the hint will come with this event:

import { HintResponseData } from "wits-client"

const callback = (data: HintResponseData) => {}

quizClient.onHint(callback)

quizClient.offHint(callback)

On Quiz Finished

const callback = () => {}

quizClient.onQuizFinished(callback)

quizClient.offQuizFinished(callback)