

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Referensi API
<a name="kvswebrtc-websocket-apis"></a>

**Topics**
+ [WebSocket titik akhir APIs](api-endpoint.md)
+ [Penerimaan pesan asinkron](async-message-reception-api.md)

# WebSocket titik akhir APIs
<a name="api-endpoint"></a>

Berikut ini adalah Amazon Kinesis Video Streams WebSocket dengan APIs endpoint WebRTC:

**Topics**
+ [ConnectAsMaster](ConnectAsMaster.md)
+ [ConnectAsViewer](ConnectAsViewer.md)

# ConnectAsMaster
<a name="ConnectAsMaster"></a>

Terhubung sebagai master ke saluran pensinyalan yang ditentukan oleh titik akhir. Pustaka WebSocket -complaint apa pun dapat digunakan untuk terhubung ke titik akhir websocket (WSS) aman yang diperoleh dari panggilan API. `GetSignalingChannelEndpoint` Nama Sumber Daya Amazon (ARN) dari saluran pensinyalan harus disediakan sebagai parameter string kueri. Ada titik akhir terpisah untuk menghubungkan sebagai master dan sebagai penampil. Jika lebih dari satu klien terhubung sebagai master ke saluran tertentu, maka permintaan terbaru diutamakan. Metadata koneksi yang ada ditimpa oleh yang baru.

## Permintaan
<a name="ConnectAsMaster-request"></a>

```
"X-Amz-ChannelARN": "string"
```
+ **X-AMZ-channelarn - ARN** dari saluran pensinyalan.
  + Jenis: string
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 1024.
  + Pola: `arn:aws:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`
  + Wajib: Ya

## Respons
<a name="ConnectAsMaster-response"></a>

200 OK kode status HTTP dengan badan kosong.

## Kesalahan
<a name="ConnectAsMaster-errors"></a>
+ InvalidArgumentException

  Parameter yang ditentukan melebihi batasannya, tidak didukung, atau tidak dapat digunakan. Untuk informasi selengkapnya, lihat pesan yang dikembalikan.

  Kode Status HTTP: 400
+ AccessDeniedException

  Penelepon tidak berwenang untuk mengakses saluran yang diberikan atau token telah kedaluwarsa.

  Kode Status HTTP: 403
+ ResourceNotFoundException

  Saluran itu tidak ada.

  Kode Status HTTP: 404
+ ClientLimitExceededException

  Ketika API dipanggil pada tingkat yang terlalu tinggi. Untuk informasi selengkapnya, lihat [Amazon Kinesis Video Streams dengan kuota layanan WebRTC](kvswebrtc-limits.md) dan [Error Retries dan Exponential Backoff](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) di. AWS

  Kode Status HTTP: 400

## Batas/Pelambatan
<a name="ConnectAsMaster-limits"></a>

API ini dibatasi pada tingkat akun jika API dipanggil pada tingkat yang terlalu tinggi. Kesalahan kembali saat dibatasi dengan. `ClientLimitExceededException`

## Idempoten
<a name="ConnectAsMaster-idempotent"></a>

Jika koneksi sudah ada untuk clientID dan saluran yang ditentukan, metadata koneksi diperbarui dengan informasi baru.

## Coba lagi perilaku
<a name="ConnectAsMaster-retry"></a>

Ini dihitung sebagai panggilan API baru.

## Panggilan bersamaan
<a name="ConnectAsMaster-concurrent"></a>

Panggilan bersamaan diizinkan, metadata koneksi diperbarui untuk setiap panggilan.

# ConnectAsViewer
<a name="ConnectAsViewer"></a>

Terhubung sebagai penampil ke saluran pensinyalan yang ditentukan oleh titik akhir. Pustaka WebSocket yang sesuai dapat digunakan untuk terhubung ke titik akhir websocket (WSS) aman yang diperoleh dari panggilan API. `GetSignalingChannelEndpoint` Nama Sumber Daya Amazon (ARN) dari saluran pensinyalan dan ID klien harus disediakan sebagai parameter string kueri. Ada titik akhir terpisah untuk menghubungkan sebagai master dan sebagai penampil. Jika ada koneksi yang ada dengan sama `ClientId` seperti yang ditentukan dalam permintaan, koneksi baru diutamakan. Metadata koneksi ditimpa dengan informasi baru.

## Permintaan
<a name="ConnectAsViewer-request"></a>

```
"X-Amz-ChannelARN": "string",
"X-Amz-ClientId": "string"
```
+ **X-AMZ-channelarn - ARN** dari saluran pensinyalan.
  + Jenis: string
  + Panjang batasan: Panjang minimum 1. Panjang maksimal 1024
  + Pola: `arn:aws:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`
  + Wajib: Ya
+ **X-Amz- ClientId** - Pengidentifikasi unik untuk klien.
  + Jenis: string
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `^(?!(?i)AWS_.*)[a-zA-Z0-9_.-]`
**catatan**  
`X-Amz-ClientId`Tidak bisa mulai dengan`AWS_`.
  + Wajib: Ya

## Respons
<a name="ConnectAsViewer-response"></a>

200 OK kode status HTTP dengan badan kosong.

## Kesalahan
<a name="ConnectAsViewer-errors"></a>
+ InvalidArgumentException

  Parameter yang ditentukan melebihi batasannya, tidak didukung, atau tidak dapat digunakan. Untuk informasi selengkapnya, lihat pesan yang dikembalikan.

  Kode Status HTTP: 400
+ AccessDeniedException

  Penelepon tidak berwenang untuk mengakses saluran yang diberikan atau token telah kedaluwarsa.

  Kode Status HTTP: 403
+ ResourceNotFoundException

  Saluran itu tidak ada.

  Kode Status HTTP: 404
+ ClientLimitExceededException

  Ketika API dipanggil pada tingkat yang terlalu tinggi atau ketika ada lebih dari jumlah maksimum pemirsa yang didukung yang terhubung ke saluran. Untuk informasi selengkapnya, lihat [Amazon Kinesis Video Streams dengan kuota layanan WebRTC](kvswebrtc-limits.md) dan [Error Retries dan Exponential Backoff](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) di. AWS

  Kode Status HTTP: 400

## Batas/Pelambatan
<a name="ConnectAsViewer-limits"></a>

API ini dibatasi pada tingkat akun jika API dipanggil pada tingkat yang terlalu tinggi atau ketika jumlah maksimum penonton yang didukung terhubung ke saluran lebih dari jumlah maksimum yang didukung. Kesalahan kembali saat dibatasi dengan. `ClientLimitExceededException`

## Idempoten
<a name="ConnectAsViewer-idempotent"></a>

Jika koneksi sudah ada untuk yang ditentukan `ClientId` dan saluran, metadata koneksi diperbarui dengan informasi baru.

## Coba lagi perilaku
<a name="ConnectAsViewer-retry"></a>

Ini dihitung sebagai panggilan API baru.

## Panggilan bersamaan
<a name="ConnectAsViewer-concurrent"></a>

Panggilan bersamaan diizinkan, metadata koneksi diperbarui untuk setiap panggilan.

# Penerimaan pesan asinkron
<a name="async-message-reception-api"></a>

Semua pesan respons dikirim secara asinkron ke penerima sebagai peristiwa (misalnya, penawaran SDP atau pengiriman jawaban SDP). Berikut ini adalah struktur pesan acara. 

## Peristiwa
<a name="async-message-reception-api-request"></a>

```
{
    "senderClientId": "string",
    "messageType": "string",
    "messagePayload": "string",
    "statusResponse": {
        "correlationId": "string",
        "errorType": "string",
        "statusCode": "string",
        "description": "string"
    }
}
```
+ **senderClientId**- Pengidentifikasi unik untuk klien pengirim.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Tidak
+ **MessageType** - Jenis acara.
  + Jenis: ENUM
  + Jenis yang Valid: `SDP_OFFER``SDP_ANSWER`,`ICE_CANDIDATE`,`GO_AWAY`,,`RECONNECT_ICE_SERVER`, `STATUS_RESPONSE`
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Ya
+ **MessagePayLoad** - Konten pesan yang dikodekan base64.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 10K.
  + Wajib: Tidak
+ **CorrelationID** - Pengidentifikasi unik dari pesan yang statusnya dimaksudkan. Ini adalah CorrelationID yang sama yang disediakan dalam pesan klien (misalnya, penawaran SDP, jawaban SDP, atau kandidat ICE).
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Ya
+ **ErrorType** - Nama untuk mengidentifikasi kesalahan secara unik.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Tidak
+ **StatusCode** - kode status HTTP sesuai dengan sifat respon.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Tidak
+ **description** - Deskripsi string yang menjelaskan status.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 1K.
  + Wajib: Tidak

# SendSdpOffer
<a name="SendSdpOffer"></a>

Mengirim penawaran ke penerima target. Prasyaratnya adalah klien harus sudah terhubung ke WebSocket titik akhir yang diperoleh dari API. `GetSignalingChannelEndpoint`

Jika jenis pengirim adalah penampil, maka ia mengirimkan penawaran ke master. Juga, tidak perlu menentukan `RecipientClientId` dan nilai tertentu untuk `RecipientClientId` diabaikan. Jika jenis pengirim adalah master, penawaran dikirim ke penampil target yang ditentukan oleh. `RecipientClientId` `RecipientClientId`adalah masukan yang diperlukan dalam kasus ini.

Aplikasi klien master diizinkan mengirim penawaran ke penampil mana pun, sedangkan aplikasi klien penampil hanya diizinkan mengirim penawaran ke aplikasi klien utama. Jika aplikasi klien penampil mencoba mengirim penawaran ke aplikasi klien penampil lain, permintaan tersebut TIDAK akan dihormati. Jika ada penawaran luar biasa untuk klien yang sama yang belum dikirimkan, itu ditimpa dengan penawaran baru.

## Permintaan
<a name="SendSdpOffer-request"></a>

```
{
    "action": "SDP_OFFER",
    "recipientClientId": "string",
    "messagePayload": "string",
    "correlationId": "string"
}
```
+ **action** - Jenis pesan yang sedang dikirim.
  + Jenis: ENUM
  + Nilai valid: `SDP_OFFER`, `SDP_ANSWER`, `ICE_CANDIDATE`
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Ya
+ **recipientClientId**- Pengidentifikasi unik untuk penerima.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Ya
+ **MessagePayLoad** - Konten pesan yang disandikan basis-64.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 10K.
  + Wajib: Ya
+ **CorrelationID** - Sebuah identifier unik untuk pesan. Ini adalah parameter opsional.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Tidak

## Respons
<a name="SendSdpOffer-response"></a>

Jika pesan berhasil diterima oleh backend pensinyalan, tidak ada respons yang dikembalikan. Jika layanan mengalami kesalahan dan jika `correlationId` ditentukan dalam permintaan, rincian kesalahan dikembalikan sebagai `STATUS_RESPONSE` pesan. Untuk informasi selengkapnya, lihat [Penerimaan pesan asinkron](async-message-reception-api.md).

## Kesalahan
<a name="SendSdpOffer-errors"></a>
+ InvalidArgumentException

  Parameter yang ditentukan melebihi batasannya, tidak didukung, atau tidak dapat digunakan. Untuk informasi selengkapnya, lihat pesan yang dikembalikan.

  Kode Status HTTP: 400
+ ClientLimitExceededException

  Ketika API dipanggil pada tingkat yang terlalu tinggi. Untuk informasi selengkapnya, lihat [Amazon Kinesis Video Streams dengan kuota layanan WebRTC](kvswebrtc-limits.md) dan [Error Retries dan Exponential Backoff](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) di. AWS

  Kode Status HTTP: 400

## Batas/Pelambatan
<a name="SendSdpOffer-limits"></a>

API ini dibatasi pada tingkat akun jika API dipanggil pada tingkat yang terlalu tinggi. Kesalahan kembali saat dibatasi dengan. `ClientLimitExceededException`

## Idempoten
<a name="SendSdpOffer-idempotent"></a>

API ini tidak idempoten.

## Coba lagi perilaku
<a name="SendSdpOffer-retry"></a>

Ini dihitung sebagai panggilan API baru.

## Panggilan bersamaan
<a name="SendSdpOffer-concurrent"></a>

Panggilan bersamaan diizinkan. Penawaran dikirim satu kali per setiap panggilan.

# SendSdpAnswer
<a name="SendSdpAnswer"></a>

Mengirimkan jawaban ke penerima target. Prasyaratnya adalah klien harus sudah terhubung ke WebSocket titik akhir yang diperoleh dari API. `GetSignalingChannelEndpoint`

Jika jenis pengirim adalah penampil, maka ia mengirimkan jawaban ke master. Juga, tidak perlu menentukan `RecipientClientId` dan nilai tertentu untuk `RecipientClientId` diabaikan. Jika jenis pengirim adalah master, jawabannya dikirim ke penampil target yang ditentukan oleh. `RecipientClientId` `RecipientClientId`adalah masukan yang diperlukan dalam kasus ini.

Aplikasi klien master diizinkan mengirim jawaban ke penampil mana pun, sedangkan aplikasi klien penampil hanya diizinkan mengirim jawaban ke aplikasi klien utama. Jika aplikasi klien penampil mencoba mengirim jawaban ke aplikasi klien penampil lain, permintaan tersebut TIDAK akan dihormati. Jika ada jawaban yang luar biasa untuk klien yang sama yang belum disampaikan, itu ditimpa dengan jawaban baru.

## Permintaan
<a name="SendSdpAnswer-request"></a>

```
{
    "action": "SDP_ANSWER",
    "recipientClientId": "string",
    "messagePayload": "string",
    "correlationId": "string"
}
```
+ **action** - Jenis pesan yang sedang dikirim.
  + Jenis: ENUM
  + Nilai valid: `SDP_OFFER`, `SDP_ANSWER`, `ICE_CANDIDATE`
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Ya
+ **recipientClientId**- Pengidentifikasi unik untuk penerima.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Ya
+ **MessagePayLoad** - Konten pesan yang disandikan basis-64.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 10K.
  + Wajib: Ya
+ **CorrelationID** - Sebuah identifier unik untuk pesan.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Tidak

## Respons
<a name="SendSdpAnswer-response"></a>

Tidak ada respons yang dikembalikan jika pesan berhasil diterima oleh backend pensinyalan. Jika layanan mengalami kesalahan dan jika `correlationId` ditentukan dalam permintaan, rincian kesalahan dikembalikan sebagai `STATUS_RESPONSE` pesan. Untuk informasi selengkapnya, lihat [Penerimaan pesan asinkron](async-message-reception-api.md).

## Kesalahan
<a name="SendSdpAnswer-errors"></a>
+ InvalidArgumentException

  Parameter yang ditentukan melebihi batasannya, tidak didukung, atau tidak dapat digunakan. Untuk informasi selengkapnya, lihat pesan yang dikembalikan.

  Kode Status HTTP: 400
+ ClientLimitExceededException

  Dikembalikan ketika API dipanggil pada tingkat yang terlalu tinggi. Untuk informasi selengkapnya, lihat [Amazon Kinesis Video Streams dengan kuota layanan WebRTC](kvswebrtc-limits.md) dan [Error Retries dan Exponential Backoff](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) di. AWS

  Kode Status HTTP: 400

## Batas/Pelambatan
<a name="SendSdpAnswer-limits"></a>

API ini dibatasi pada tingkat akun jika API dipanggil pada tingkat yang terlalu tinggi. Kesalahan dikembalikan saat dibatasi dengan. `ClientLimitExceededException`

## Idempoten
<a name="SendSdpAnswer-idempotent"></a>

API ini tidak idempoten.

## Coba lagi perilaku
<a name="SendSdpAnswer-retry"></a>

Ini dihitung sebagai panggilan API baru.

## Panggilan bersamaan
<a name="SendSdpAnswer-concurrent"></a>

Panggilan bersamaan diizinkan. Penawaran dikirim satu kali per setiap panggilan.

# SendIceCandidate
<a name="SendIceCandidate"></a>

Mengirim kandidat ICE ke penerima target. Prasyaratnya adalah klien harus sudah terhubung ke WebSocket titik akhir yang diperoleh dari API. `GetSignalingChannelEndpoint`

Jika jenis pengirim adalah penampil, maka ia mengirim kandidat ICE ke master. Juga, tidak perlu menentukan `RecipientClientId` dan nilai tertentu untuk `RecipientClientId` diabaikan. Jika jenis pengirim adalah master,  kandidat ICE dikirim ke target yang ditentukan oleh. `RecipientClientId` `RecipientClientId`adalah masukan yang diperlukan dalam kasus ini.

Aplikasi klien master diizinkan mengirim kandidat ICE ke penampil mana pun, sedangkan aplikasi klien penampil hanya diizinkan mengirim kandidat ICE ke aplikasi klien utama. Jika aplikasi klien penampil mencoba mengirim kandidat ICE ke aplikasi klien penampil lain, permintaan tersebut TIDAK akan dihormati.

## Permintaan
<a name="SendIceCandidate-request"></a>

```
{
    "action": "ICE_CANDIDATE",
    "recipientClientId": "string",
    "messagePayload": "string",
    "correlationId": "string"
}
```
+ **action** - Jenis pesan yang sedang dikirim.
  + Jenis: ENUM
  + Nilai valid: `SDP_OFFER`, `SDP_ANSWER`, `ICE_CANDIDATE`
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Ya
+ **recipientClientId**- Pengidentifikasi unik untuk penerima.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Tidak
+ **MessagePayLoad** - Konten pesan yang dikodekan base64.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 10K.
  + Wajib: Ya
+ **CorrelationID** - Sebuah identifier unik untuk pesan.
  + Tipe: String
  + Panjang batasan: Panjang minimum 1. Panjang maksimum 256.
  + Pola: `[a-zA-Z0-9_.-]+`
  + Wajib: Tidak

## Respons
<a name="SendIceCandidate-response"></a>

Tidak ada respons yang dikembalikan jika pesan berhasil diterima oleh backend pensinyalan. Jika layanan mengalami kesalahan dan jika `correlationId` ditentukan dalam permintaan, rincian kesalahan dikembalikan sebagai `STATUS_RESPONSE` pesan. Untuk informasi selengkapnya, lihat [Penerimaan pesan asinkron](async-message-reception-api.md).

## Kesalahan
<a name="SendIceCandidate-errors"></a>
+ InvalidArgumentException

  Parameter yang ditentukan melebihi batasannya, tidak didukung, atau tidak dapat digunakan. Untuk informasi selengkapnya, lihat pesan yang dikembalikan.

  Kode Status HTTP: 400
+ ClientLimitExceededException

  Ketika API dipanggil pada tingkat yang terlalu tinggi. Untuk informasi selengkapnya, lihat [Amazon Kinesis Video Streams dengan kuota layanan WebRTC](kvswebrtc-limits.md) dan [Error Retries dan Exponential Backoff](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) di. AWS

  Kode Status HTTP: 400

## Batas/Pelambatan
<a name="SendIceCandidate-limits"></a>

API ini dibatasi pada tingkat akun jika API dipanggil pada tingkat yang terlalu tinggi. Kesalahan kembali saat dibatasi dengan. `ClientLimitExceededException`

## Idempoten
<a name="SendIceCandidate-idempotent"></a>

API ini tidak idempoten.

## Coba lagi perilaku
<a name="SendIceCandidate-retry"></a>

Ini dihitung sebagai panggilan API baru.

## Panggilan bersamaan
<a name="SendIceCandidate-concurrent"></a>

Panggilan bersamaan diizinkan. Penawaran dikirim satu kali per setiap panggilan.

# Putuskan sambungan
<a name="Disconnect"></a>

Klien dapat menutup koneksi kapan saja. WebSocket-pustaka yang sesuai mendukung fungsionalitas dekat. Ketika koneksi ditutup, layanan menandai klien sebagai offline untuk saluran pensinyalan tertentu dan tidak mencoba mengirimkan pesan apa pun. Perilaku yang sama juga berlaku jika terjadi batas waktu koneksi idle.

Layanan ini juga mengirimkan indikasi pemutusan ke klien, misalnya, selama penerapan atau pemeliharaan server. Berikut ini adalah pesan indikasi yang ditentukan:
+ **GO\$1AWAY**: Pesan ini digunakan untuk memulai shutdown koneksi. Ini memungkinkan klien untuk memproses pesan sebelumnya dengan anggun, memutuskan sambungan, dan menyambung kembali ke saluran pensinyalan jika diperlukan. 
+ **RECONNECT\$1ICE\$1SERVER**: Pesan ini digunakan untuk memulai shutdown koneksi relay dan memungkinkan klien untuk memutuskan sambungan dengan anggun, mendapatkan konfigurasi server ICE baru, dan menyambung kembali ke server relai jika diperlukan.