CheckForUpdates

/osc/checkForUpdates API mengidentifikasi pembaruan status dengan membandingkan stateFingerprint terakhir klien yang diketahui dengan fingerprint kamera saat ini.

Input

Nama Jenis Deskripsi
stateFingerprint String Sidik jari status kamera sejak terakhir kali klien memanggil /osc/state atau /osc/checkForUpdates.
waitTimeout Bilangan bulat (opsional) Jumlah detik untuk menunggu terjadinya perubahan status pada kamera sebelum menampilkan respons. Saat waitTimeout berakhir masa berlakunya, kamera akan menampilkan respons meskipun sidik jari belum berubah. Jika perubahan status terdeteksi sebelum waitTimeout berakhir, atau jika waitTimeout dihapus, kamera akan segera menampilkan respons.Catatan: kamera dapat menampilkan respons sebelum waitTimeout berakhir meskipun sidik jari belum berubah, tetapi praktik terbaik adalah menunggu hingga waitTimeout berakhir masa berlakunya.

Catatan penerapan kamera:

  • Setelah menerima panggilan ini, kamera akan membandingkan sidik jari statusnya saat ini dengan parameter stateFingerprint yang diterima. Jika sidik jari berubah, kamera harus segera mengembalikan sidik jari baru.

Output

Nama Jenis Deskripsi
stateFingerprint String Sidik jari baru status kamera (sama seperti di /osc/state API).
throttleTimeout Bilangan Bulat Jumlah detik yang disarankan bagi klien untuk menunggu sebelum panggilan checkForUpdates berikutnya. Klien dapat membuat permintaan sebelum masa berlaku throttleTimeout habis, dan kamera harus mengizinkan permintaan awal ini jika memungkinkan.

Catatan penerapan klien:

  • Setelah menerima respons, klien harus membandingkan stateFingerprint yang diterima dengan salinannya. Jika tidak cocok, klien harus meminta status kamera saat ini menggunakan _/osc/state API.
  • Klien cerdas akan men-throttle permintaan terlepas dari respons kamera. Misalnya, jika kamera menampilkan respons non-standar (langsung, tanpa perubahan dan throttleTimeout) rendah atau 0, klien harus menerapkan throttleTimeout-nya sendiri sebelum meminta checkForUpdates lain dari kamera.

Catatan penerapan kamera:

  • Saat merespons checkForUpdates, kamera akan menentukan throttleTimeout yang wajar. Jika kamera mendukung logika permintaan yang berlangsung lama (hanya merespons setelah waitTimeout jika status belum berubah), Anda dapat menampilkan throttleTimeout sebagai 0. Dalam hal ini, klien bisa segera meminta pembaruan.
  • Jika kamera hanya mendukung respons cepat (tidak direkomendasikan), kamera harus menampilkan throttleTimeout yang wajar untuk menghindari traffic permintaan/respons yang konstan dengan klien. Misalnya, throttleTimeout yang wajar adalah 60 detik, untuk mengizinkan satu permintaan klien per menit.
  • Praktik terbaik adalah menampilkan throttleTimeout yang sesuai dengan kemampuan kamera. Jika server tidak dapat menentukan throttleTimeout yang sesuai karena masalah server, kamera harus merespons dengan kode status 5XX dan isi JSON yang berisi kode error serverError.

Error

Kode error Deskripsi
missingParameter stateFingerprint tidak ditentukan.
invalidParameterName Satu atau beberapa nama parameter input tidak dikenal.
invalidParameterValue Nama parameter dikenali, tetapi satu atau beberapa nilai tidak valid; misalnya, waitTimeout di luar rentang atau jenisnya salah.
serverError Server tidak dapat menentukan nilai throttleTimeout yang sesuai untuk responsnya. Masalah server akan diidentifikasi melalui nilai 5XX yang dikembalikan dalam responsnya. Produsen kamera harus memberikan tabel kode 5XX dan status server yang sesuai yang dapat menampilkan error ini.

Contoh

Permintaan
POST /osc/checkForUpdates HTTP/1.1
Host: [camera ip address]:[httpUpdatesPort]
Content-Type: application/json;charset=utf-8
Accept: application/jsonContent-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1

{
    "stateFingerprint": "12EGA33",
    "waitTimeout": 300
}
Respons
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Content-Length: {CONTENT_LENGTH}
X-Content-Type-Options: nosniff

{
    "stateFingerprint": "12EGA86",
    "throttleTimeout": 60
}
Permintaan
POST /osc/checkForUpdates HTTP/1.1
Host: [camera ip address]:[httpUpdatesPort]
Content-Type: application/json;charset=utf-8
Accept: application/jsonContent-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1

{
    "stateFingerprint": "12EGA33",
    "waitTimeout": 300
}
Respons
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=utf-8
Content-Length: {CONTENT_LENGTH}
X-Content-Type-Options: nosniff

{
    "name": "camera.checkForUpdates",
    "state": "error",
    "error": {
        "code": "missingParameter",
        "message": "parameter stateFingerprint is missing."
    }
}