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

카메라 구현 유의 사항:

  • checkForUpdates에 응답할 때, 카메라는 적절한 throttleTimeout을 결정해야 합니다. 만약 카메라가 긴 대기 요청 로직을 지원하는 경우(상태 변경이 없는 경우 waitTimeout 후에만 응답), throttleTimeout0으로 반환해도 괜찮습니다. 이 경우 클라이언트가 업데이트를 즉시 요청할 수 있습니다.
  • 카메라가 고속 응답만을 지원하는 경우(권장되지 않음), 클라이언트와의 연속된 요청/응답 트래픽을 피하기 위해 적절한 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."
    }
}