CheckForUpdates
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
/osc/checkForUpdates
API 會比較用戶端最新的已知 stateFingerprint
與相機目前的 fingerprint
,藉此識別狀態更新。
名稱 |
類型 |
說明 |
stateFingerprint |
字串 |
上次用戶端呼叫 /osc/state 或 /osc/checkForUpdates 後的相機狀態指紋。 |
waitTimeout |
整數 (選用) |
在傳回回應前,等待相機狀態變更發生的秒數。waitTimeout 到期後,即使指紋並未變更,相機仍會傳回回應。如果在 waitTimeout 到期前偵測到狀態變更,或是省略 waitTimeout ,攝影機應立即傳回回應。注意:即使指紋並未變更,攝影機也能在 waitTimeout 過期前傳回回應,但最佳做法是等到 waitTimeout 過期。 |
相機實作注意事項:
- 收到這項呼叫後,攝影機會比較目前的狀態指紋與收到的
stateFingerprint
參數。如果指紋有所變更,相機必須立即傳回新的指紋。
輸出
名稱 |
類型 |
說明 |
stateFingerprint |
字串 |
相機狀態的新指紋 (與 /osc/state API 相同)。 |
throttleTimeout |
整數 |
建議用戶端在下一次 checkForUpdates 呼叫之前等待的秒數。用戶端可以在 throttleTimeout 到期前提出要求,相機應盡可能允許這些早期要求。 |
用戶端導入註意事項:
- 收到回應後,用戶端應比對收到的
stateFingerprint
和副本。如果兩者不相符,用戶端應使用 _/osc/state
API 要求相機目前的狀態。
- 無論相機回應為何,智慧型用戶端都會限制要求的數量。舉例來說,如果相機傳回非標準回應 (即「沒有變更」且「低」或「0」
throttleTimeout)
的即時回應),則用戶端在向相機要求另一個 checkForUpdates
之前,應先施加自己的 throttleTimeout
。
相機實作注意事項:
- 回應
checkForUpdates
時,相機應決定合理的 throttleTimeout
。如果相機支援長期的要求邏輯 (僅在狀態未變更時才回應 waitTimeout
後回應),則可以將 throttleTimeout
傳回 0
。在這種情況下,客戶可以立即要求更新。
- 如果相機僅支援快速回應 (不建議),則應傳回合理的
throttleTimeout
,避免用戶端不斷接收要求/回應流量。舉例來說,合理的 throttleTimeout
為 60 秒,以便每分鐘允許一次用戶端要求。
- 最佳做法是傳回適合相機功能的
throttleTimeout
。如果伺服器因伺服器問題而無法決定適當的 throttleTimeout
,相機應傳回 5XX 狀態碼和包含 serverError
錯誤代碼的 JSON 主體。
錯誤
錯誤代碼 |
說明 |
missingParameter |
未指定stateFingerprint 。 |
invalidParameterName |
系統無法辨識一或多個輸入參數名稱。 |
invalidParameterValue |
系統可辨識參數名稱,但一或多個值無效。例如 waitTimeout 超出範圍或類型不正確。 |
serverError |
伺服器無法針對回應決定適當的 throttleTimeout 值。伺服器問題會以回應中傳回的 5XX 值表示。相機製造商應提供一份 5XX 代碼表,以及可擲回此錯誤的相應伺服器狀態。 |
範例 |
要求 |
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
} |
回應 |
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
} |
要求 |
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
} |
回應 |
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."
}
} |
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-25 (世界標準時間)。
[null,null,["上次更新時間:2025-07-25 (世界標準時間)。"],[],["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"],null,[]]