/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.
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."
}
} |