# การใช้งานกับ TypeScript SDK

สำหรับโปรเจกต์ที่ใช้ TypeScript หรือ JavaScript bundler (เช่น Vite, Webpack) สามารถติดตั้งแพ็กเกจเสริมเพื่อให้ได้ type definition และ helper function สำหรับเรียกใช้ SDK

# การติดตั้ง

npm install @byteark/passport-clearkey-web-sdk
1

หมายเหตุ: แพ็กเกจ npm นี้เป็น type definition และ helper function เท่านั้น — ยังคงต้องเพิ่ม <script> tag ของ SDK ในหน้า HTML ด้วยเช่นเดิม

<script src="https://byteark-sdk.cdn.byteark.com/passport-clearkey/web-sdk/v0/passport-web-sdk.js"></script>
1

# การใช้งาน loadPassportWebSDK

ฟังก์ชัน loadPassportWebSDK() จะคืนค่า instance จาก window.PassportWebSDK ที่โหลดมาจาก Script Tag — หากยังไม่ได้โหลด SDK จะ throw Error

import { loadPassportWebSDK } from '@byteark/passport-clearkey-web-sdk';
import type { PassportWebSDK } from '@byteark/passport-clearkey-web-sdk';
async function setup(): Promise<void> {
  const sdk: PassportWebSDK | null = await loadPassportWebSDK();
  if (!sdk) {
    console.error('SDK is not available');
    return;
  }
  // Authenticate
  const result = await sdk.initAuth(
    'YOUR_JWT_TOKEN',
    'https://YOUR_KEY_SERVER_URL',
    { logEnabled: true }
  );
  console.log('Authentication successful:', result.message);
}
setup();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# การใช้งานกับ HLS.js

ตัวอย่างการใช้ getXhrSetup() ร่วมกับ HLS.js ในโปรเจกต์ TypeScript

สำหรับการได้มาของ JWT Token และ Key Server URL สามารถอ้างอิงได้จาก การติดตั้งและยืนยันตัวตนเบื้องต้น

import { loadPassportWebSDK } from '@byteark/passport-clearkey-web-sdk';
import Hls from 'hls.js';
async function playVideo(): Promise<void> {
  const sdk = await loadPassportWebSDK();
  if (!sdk) return;
  // 1. Authenticate
  await sdk.initAuth('YOUR_JWT_TOKEN', 'https://YOUR_KEY_SERVER_URL');
  // 2. Create HLS.js with xhrSetup from SDK
  const xhrSetup = sdk.getXhrSetup();
  const hls = new Hls({ xhrSetup });
  const video = document.getElementById('video') as HTMLVideoElement;
  hls.loadSource('YOUR_HLS_URL');
  hls.attachMedia(video);
  hls.on(Hls.Events.MANIFEST_PARSED, () => {
    video.play();
  });
}
playVideo();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24