Web サンプル

Cube Samples のいずれかを設定した後、ストリームを表示してゲームデータを使用するために、Genvid API を適切に呼び出すことができる Web サイトが必要です。また、ゲームと対話するためには、Genvid API を介して特定の呼び出しを行う必要があります。

Web サンプルは、 キューブサンプル から DirectXUnreal、または Unity にストリーム配信するための Web サイトを作成します。 Cluster UI Jobs のページにサービスとして表示されます。 CUBE SAMPLE リンクと CUBE ADMIN リンクが含まれています。

これらのリンクは、実行中の DirectX、Unreal、または Unity のサンプルをストリーミングする Web サイトにリダイレクトします。 CUBE SAMPLE リンクはユーザーとしてリダイレクトし、 CUBE ADMIN リンクは管理者としてリダイレクトします。

使用するためには、ビルドしてからロードする必要があります。

  1. /samples/cube/web ディレクトリに移動します。

  2. Web サイトを構築します。

    py web.py build
    
  3. Web サイトをロードします。

    py web.py load
    

ローカルクラスタでの SSL サポート

Web サンプルの読み込み時に、ローカルクラスタ用の自己署名 SSL 証明書を生成できるようになりました。新しい python スクリプト /samples/cube/web/generate_ssl.py は、HashiCorp Vault を使用して、Web サンプルのバックエンドが使用する証明書を生成します。スクリプトは次の通りです。

#!/usr/bin/env python3
import hvac
import os
import json
import consul


def create_new_ssl():
    client = hvac.Client(url='http://127.0.0.1:8200')

    secrets_engines_list = client.sys.list_mounted_secrets_engines()['data']

    if "pki/" in secrets_engines_list:
        print('The PKI engine is already enabled.')
    else:
        client.sys.enable_secrets_engine(backend_type='pki', )
        print('The PKI engine has been enabled')

    client.sys.tune_mount_configuration(
        path='pki',
        max_lease_ttl='87600h',
    )

    generate_root_response = client.secrets.pki.generate_root(
        type='exported', common_name='New root CA')
    print('New root CA: {}'.format(generate_root_response))

    set_urls_response = client.secrets.pki.set_urls({
        'issuing_certificates': ['http://127.0.0.1:8200/v1/pki/ca'],
        'crl_distribution_points': ['http://127.0.0.1:8200/v1/pki/crl']
    })

    create_or_update_role_response = client.secrets.pki.create_or_update_role(
        'localhostrole', {
            'ttl': '72h',
            'allow_localhost': 'true'
        })
    print('New role: {}'.format(create_or_update_role_response))

    generate_certificate_response = client.secrets.pki.generate_certificate(
        name='localhostrole', common_name='localhost')
    response = generate_certificate_response.json()
    print('Certificate response data: ', response)

    # the following lines will create the files needed for Nodejs to read the certificate and private key.
    cur_path = os.path.dirname(__file__)

    f = open(os.path.join(cur_path, "certificate.pem"), "w")
    f.write(response["data"]["certificate"])
    f.close()

    f = open(os.path.join(cur_path, "key.pem"), "w")
    f.write(response["data"]["private_key"])
    f.close()

スクリプトを起動するには、Web サンプルの読み込み時に以下のコマンドを使用します。

py web.py load --ssl

または

py web.py load -s

スタンドアロンモードでも YouTube などの配信プラットフォームでも、embed_ssl を true に設定して SSL での埋め込みを可能にする新しい設定が hcl ファイルに含まれていることを確認してください。

config {
   embed_ssl {
      enabled = true
   }
}

警告

クラウドで SSL を使っている場合でも、ローカルクラスタで SSL を使っている場合でも、もし、embed_ssl キーを含む複数の hcl 設定ファイル (twitch.sample.hclyoutube.sample.hcl など) を読み込む必要がある場合は、必ず Web サンプルの読み込み に読み込むようにしてください。そうしないと、embed_ssl キーに関連付けられた値を上書きしてしまう可能性があります。

ここでは、Web サンプルの作成方法を順を追って説明します。プロジェクトに役立つと思われるサンプルコードは、ご自由にご利用ください。