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를 사용하여 카메라의 현재 상태를 요청해야 합니다.
  • 스마트 클라이언트는 카메라 응답에 관계없이 요청을 제한합니다. 예를 들어 카메라가 비표준 응답 (변경 없음 및 0throttleTimeout)이 즉시)을 반환하는 경우 클라이언트는 카메라에 또 다른 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."
    }
}