Проверить обновления
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
API /osc/checkForUpdates
идентифицирует обновления состояния, сравнивая последний известный stateFingerprint
клиента с текущим fingerprint
камеры.
Имя | Тип | Описание |
---|
stateFingerprint | Нить | Отпечаток состояния камеры с момента последнего вызова клиентом /osc/state или /osc/checkForUpdates . |
waitTimeout | Целое число (необязательно) | Количество секунд ожидания изменения состояния камеры перед возвратом ответа. По истечении времени waitTimeout камера должна вернуть ответ, даже если отпечаток пальца не изменился. Если изменение состояния обнаружено до истечения срока waitTimeout или если waitTimeout опущен, камера должна немедленно вернуть ответ. Примечание. Камера может вернуть ответ до истечения waitTimeout , даже если отпечаток пальца не изменился, но лучше всего дождаться истечения срока waitTimeout . |
Замечания по реализации камеры:
- Получив этот вызов, камера сравнивает свой отпечаток текущего состояния с полученным параметром
stateFingerprint
. Если отпечаток пальца изменился, камера должна немедленно вернуть новый отпечаток пальца.
Выход
Имя | Тип | Описание |
---|
stateFingerprint | Нить | Новый отпечаток состояния камеры (тот же, что и в /osc/state API). |
throttleTimeout | Целое число | Рекомендуемое количество секунд ожидания клиента перед следующим вызовом checkForUpdates . Клиенты могут отправлять запросы до истечения throttleTimeout , и камеры должны, если возможно, разрешать эти ранние запросы. |
Замечания по реализации клиента:
- Получив ответ, клиент должен сравнить полученный
stateFingerprint
с его копией. Если они не совпадают, клиент должен запросить текущее состояние камеры с помощью API _/osc/state
. - Умные клиенты будут регулировать запросы независимо от реакции камеры. Например, если камера возвращает нестандартный ответ (сразу же, без изменений и с низким или нулевым значением
throttleTimeout)
, клиент должен установить свой собственный throttleTimeout
прежде чем запрашивать еще один checkForUpdates
от камеры.
Замечания по реализации камеры:
- При ответе на
checkForUpdates
камера должна определить разумное throttleTimeout
. Если камера поддерживает давнюю логику запроса (ответ только после waitTimeout
, если состояние не изменилось), можно вернуть throttleTimeout
как 0
. В этом случае клиенты могут сразу запросить обновления. - Если камера поддерживает только быстрые ответы ( не рекомендуется ), она должна возвращать разумное значение
throttleTimeout
, чтобы избежать постоянного трафика запросов/ответов с клиентом. Например, разумное значение throttleTimeout
будет равно 60 секундам, чтобы разрешить один клиентский запрос в минуту. - Лучше всего возвращать
throttleTimeout
соответствующий возможностям камеры. Если сервер не может определить подходящий throttleTimeout
из-за проблемы с сервером, камера должна ответить кодом состояния 5XX и телом JSON, содержащим код ошибки serverError
.
Ошибка
Код ошибки | Описание |
---|
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."
}
} |
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-25 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-25 UTC."],[],["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"]]