/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
[null,null,["Son güncelleme tarihi: 2024-08-21 UTC."],[[["The `/osc/checkForUpdates` API allows clients to efficiently check for camera state changes without repeatedly requesting the full state."],["Clients provide their last known state fingerprint, and the camera responds with a new fingerprint if the state has changed."],["A `throttleTimeout` value is provided to guide clients on how frequently to check for updates, optimizing network traffic."],["If the camera's state has not changed, it may wait for a specified `waitTimeout` before responding to avoid unnecessary updates."],["Errors are provided if parameters are missing, invalid, or if the server encounters an issue determining an appropriate `throttleTimeout`."]]],["The `/osc/checkForUpdates` API checks for camera state changes. The client sends its `stateFingerprint` and an optional `waitTimeout`. The camera compares the received `stateFingerprint` with its current one, immediately returning the new fingerprint if changed. The camera also returns a `throttleTimeout` suggesting how long the client should wait before its next check. If the fingerprints match or after the wait time expires, a response is sent. Clients then request the current state if fingerprints don't match.\n"]]