/osc/checkForUpdates
API, istemcinin bilinen son stateFingerprint
değerini kameranın mevcut fingerprint
değeri ile karşılaştırarak durum güncellemelerini tanımlar.
Ad |
Tür |
Açıklama |
stateFingerprint |
Dize |
İstemcinin /osc/state veya /osc/checkForUpdates adlı son aramadaki kamera durumu parmak izi. |
waitTimeout |
Tam sayı (isteğe bağlı) |
Yanıt döndürülmeden önce kamerada durum değişikliğinin gerçekleşmesi için beklenecek saniye sayısı. waitTimeout talimatının süresi dolduğunda, parmak izi değişmese bile kamera bir yanıt döndürecektir. waitTimeout süresi dolmadan önce bir durum değişikliği algılanırsa veya waitTimeout atlanırsa kamera, yanıtı hemen döndürecektir.Not: Parmak izi değişmemiş olsa bile kamera, waitTimeout süresi dolmadan yanıt verebilir ancak en iyi uygulama, waitTimeout cihazının süresi dolana kadar beklemektir. |
Kamera uygulama notları:
- Bu çağrıyı aldı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 döndürmesi gerekir.
Çıkış
|
|
|
stateFingerprint |
Dize |
Kamera durumunun yeni parmak izi (/osc/state API'dekiyle aynıdır). |
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. Kameraların bu erken isteklere mümkünse izin vermesi gerekir. |
Müşteri uygulama notları:
- Yanıt aldıktan sonra müşteri, aldığı
stateFingerprint
ile kopyasını karşılaştırmalıdır. Eşleşmiyorlarsa istemcinin _/osc/state
API'yi kullanarak kameranın mevcut durumunu istemesi gerekir.
- Akıllı istemciler, kamera yanıtından bağımsız olarak istekleri kısıtlar. Örneğin, bir kamera standart dışı bir yanıt döndürürse (hemen, değişiklik yok ve düşük veya 0
throttleTimeout)
ile) istemci, kameradan başka bir checkForUpdates
istemeden önce kendi throttleTimeout
kodunu uygulamalıdır.
Kamera uygulama notları:
checkForUpdates
adlı kullanıcıya yanıt verirken kamera makul bir throttleTimeout
belirlemelidir. Kamera uzun süreli istek mantığını destekliyorsa (durum değişmediyse yalnızca waitTimeout
sonrasında yanıt verir) throttleTimeout
öğesinin 0
olarak döndürülmesinde sorun yoktur. Bu durumda istemciler hemen güncelleme isteğinde bulunabilir.
- Kamera yalnızca hızlı yanıtları destekliyorsa (önerilmez) istemcideki sürekli istek/yanıt trafiğinden kaçınmak 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 kodu ve serverError
hata kodu içeren bir JSON gövdesi ile yanıt vermelidir.
Hata
Hata kodu |
|
missingParameter |
stateFingerprint belirtilmedi. |
invalidParameterName |
Bir veya daha fazla giriş parametresi adı tanınmıyor. |
invalidParameterValue |
Parametre adları tanınıyor, 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 tanımlanır. Kamera üreticileri, bu hatayı oluşturabilecek 5XX kodları ve ilgili sunucu durumlarından oluşan 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."
}
} |