Güncellemeleri Kontrol Et

/osc/checkForUpdates API, durum güncellemelerini, istemcinin bilinen son stateFingerprint değeri ile kameranın mevcut fingerprint değerini karşılaştırarak tanımlar.

Giriş

Ad Tür Açıklama
stateFingerprint Dize İstemcinin /osc/state veya /osc/checkForUpdates adlı son aramasından alınan kamera durumu parmak izi.
waitTimeout Tam sayı (isteğe bağlı) Yanıtı döndürmeden önce kamerada durum değişikliğinin gerçekleşmesi için beklenecek saniye sayısı. waitTimeout geçerlilik süresi sona erdiğinde, parmak izi değişmemiş olsa bile kamera yanıt döndürür. waitTimeout süresi dolmadan önce bir durum değişikliği algılanırsa veya waitTimeout atlanırsa kamera hemen yanıt döndürür.Not: Parmak izi değişmemiş olsa bile kamera, waitTimeout süresi dolmadan önce yanıt döndürebilir. Ancak en iyi uygulama, waitTimeout ürününün süresinin dolmasını beklemektir.

Kamera uygulama notları:

  • Bu çağrı alındıktan sonra kamera, mevcut durum parmak izini alınan stateFingerprint parametresiyle karşılaştırır. Parmak izi değiştiyse kameranın yeni parmak izini hemen iade etmesi gerekir.

Çıkış

Ad Tür Açıklama
stateFingerprint Dize Kamera durumunun yeni parmak izi (/osc/state API'dekiyle aynı).
throttleTimeout Tamsayı Müşterinin bir sonraki checkForUpdates aramasından önce beklemesi için önerilen saniye sayısı. Müşteriler, throttleTimeout süresi dolmadan önce istekte bulunabilir ve mümkünse kameralar bu erken isteklere izin vermelidir.

Müşterinin uygulama notları:

  • Müşteri yanıt aldıktan sonra, alınan stateFingerprint öğesini kopyasıyla karşılaştırmalıdır. Bunlar eşleşmiyorsa istemci, _/osc/state API'yi kullanarak kameranın mevcut durumunu istemelidir.
  • Akıllı istemciler, kameranın yanıtından bağımsız olarak istekleri kısıtlar. Örneğin, bir kamera standart olmayan bir yanıt verirse (hemen, değişiklik yok ve düşük veya 0 throttleTimeout) ile) istemci, kameradan başka bir checkForUpdates istemeden önce kendi throttleTimeout değerini uygulamalıdır.

Kamera uygulama notları:

  • Kamera, checkForUpdates adlı kullanıcıya yanıt verirken makul bir throttleTimeout belirlemelidir. Kamera uzun süreli istek mantığını destekliyorsa (yalnızca durum değişmediyse waitTimeout sonrasında yanıt verir) throttleTimeout öğesi 0 olarak döndürülebilir. Bu durumda, müşteriler hemen güncelleme isteğinde bulunabilir.
  • Kamera yalnızca hızlı yanıtları destekliyorsa (önerilmez), istemciyle sürekli istek/yanıt trafiğini önlemek için makul bir throttleTimeout döndürmelidir. Örneğin, dakikada bir istemci isteğine izin vermek için makul bir throttleTimeout 60 saniyedir.
  • En iyi uygulama kameranın özelliklerine uygun bir throttleTimeout döndürmektir. Sunucu, sunucu sorunu nedeniyle uygun bir throttleTimeout belirleyemezse kamera, 5XX durum koduyla ve serverError hata kodu içeren bir JSON gövdesiyle yanıt vermelidir.

Hata

Hata kodu Açıklama
missingParameter stateFingerprint belirtilmemiş.
invalidParameterName Bir veya daha fazla giriş parametresi adı tanınmıyor.
invalidParameterValue Parametre adları tanındı ancak bir veya daha fazla değer geçersiz; Örneğin, waitTimeout aralık dışında veya türü yanlış.
serverError Sunucu, yanıtı için uygun bir throttleTimeout değeri belirleyemedi. Sunucu sorunu, yanıtta döndürülen 5XX değeriyle belirlenir. Fotoğraf makinesi üreticileri, bu hataya neden olabilecek 5XX kodları ve ilgili sunucu durumlarını içeren bir tablo sağlamalıdır.

Örnek

İstek
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
}
Yanıt
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
}
İstek
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
}
Yanıt
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."
    }
}