/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를 사용하여 카메라의 현재 상태를 요청해야 합니다.
- 스마트 클라이언트는 카메라 응답에 상관없이 요청을 차단할 것입니다. 예를 들어, (변경이 없고
throttleTimeout)
이 낮거나 0일 때) 카메라가 비표준 응답을 즉시 반환하는 경우, 클라이언트는 카메라에서 또 다른 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."
}
} |