Skip to content
On this page

イベントの視聴制限

概要

hedgehog ではチケット機能を使って有料イベントを作成する事が出来、有料イベントでは情報の取得にチケット番号を要求されるケースがあります。

このように、ある程度の制御は API 側でも行いますが、例えば「有料イベントの視聴ページにはそもそも入れないようにしたい」等に対応しようと思うと、フロントエンド側で対応する必要があります。

WARNING

ここでの制限を正しく実装しないと、例えば一つのチケットを使いまわして多人数が視聴出来る等、イベントの収益に対して悪影響を及ぼす可能性があります。

制限機能

hedgehog には以下に示す 2 つの制限機能があります。

ここでは、それらの基本的な使い方を解説します。

WARNING

以下サンプルは、環境変数に STAGE_UUID がセットされている前提になります。

チケット番号の確認をする

チケット番号の有効確認は、以下のように行います。

ts
const isValid = await Hedgehog.stage
  .ref(process.env.STAGE_UUID as string)
  .ticket.ref("チケットUUID")
  .validate("チケット番号");

上記の例は「どのチケットから発行されたチケット番号か」が分かっている場合は有効ですが、イベントに対して多くのチケットが紐づくケースもあるので、そういった場合はチェックが煩雑になってしまいます。

イベントに紐づく全てのチケットに対して、入力されたチケット番号が有効かどうかを確認するには、以下のようにします。

ts
const isValidForEvent = await Hedgehog.stage
  .ref(process.env.STAGE_UUID as string)
  .event.ref("イベントUUID")
  .validate("チケット番号");

同時視聴の制限をする

hedgehog で発行されたチケット番号は、3 端末(画面)分まで同時に使用できるという仕様になっています。しかし、ユーザーに制限を超えた事を通知して実際に視聴を中止するためには、各フロントエンドで適切に実装する必要があります。

まずは TicketLimitter インスタンスを取得します。

ts
const limitter = await Hedgehog.stage
  .ref(process.env.STAGE_UUID as string)
  .ticket.limit("チケット番号");

視聴制限を超えた通知を受け取るには、 watch 関数にコールバックを設定します。

ts
await limitter.watch(() => {
  alert("最大同時視聴数を超えました");
});

有料エリアを離れる場合等、視聴制限が必要なくなった場合は stop を呼び出して監視を停止します。

ts
  limitter.stop();

INFO

hedgehog の視聴制限は押し出し式になっており、チケットを使った時に既に視聴人数が最大の 3 人だった場合、最初にチケットを使用した端末で視聴制限を超えた事が通知されます。