Проверить обновления
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
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.
[null,null,["Последнее обновление: 2025-07-25 UTC."],[[["\u003cp\u003eThe \u003ccode\u003e/osc/checkForUpdates\u003c/code\u003e API allows clients to efficiently check for camera state changes without repeatedly requesting the full state.\u003c/p\u003e\n"],["\u003cp\u003eClients provide their last known state fingerprint, and the camera responds with a new fingerprint if the state has changed.\u003c/p\u003e\n"],["\u003cp\u003eA \u003ccode\u003ethrottleTimeout\u003c/code\u003e value is provided to guide clients on how frequently to check for updates, optimizing network traffic.\u003c/p\u003e\n"],["\u003cp\u003eIf the camera's state has not changed, it may wait for a specified \u003ccode\u003ewaitTimeout\u003c/code\u003e before responding to avoid unnecessary updates.\u003c/p\u003e\n"],["\u003cp\u003eErrors are provided if parameters are missing, invalid, or if the server encounters an issue determining an appropriate \u003ccode\u003ethrottleTimeout\u003c/code\u003e.\u003c/p\u003e\n"]]],["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,["# CheckForUpdates\n\nThe `/osc/checkForUpdates` API identifies state updates by comparing the client's last known `stateFingerprint` to the camera's current `fingerprint`.\n\nInput\n-----\n\n| **Name** | **Type** | **Description** |\n|--------------------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `stateFingerprint` | String | Camera state fingerprint from the last time the client called `/osc/state` or `/osc/checkForUpdates`. |\n| `waitTimeout` | Integer (optional) | Number of seconds to wait for state change on the camera to occur before returning the response. When `waitTimeout` expires, the camera should return a response even if the fingerprint hasn't changed. If a state change is detected before `waitTimeout` expires, or if `waitTimeout` is omitted, the camera should immediately return the response.**Note:** the camera can return a response before `waitTimeout` has expired even if the fingerprint hasn't changed, but the ***best practice*** is to wait until `waitTimeout` expires. |\n\n### Camera implementation notes:\n\n- Upon receiving this call, the camera compares its current state fingerprint with the received `stateFingerprint` parameter. If the fingerprint has changed, the camera must immediately return the new fingerprint.\n\nOutput\n------\n\n| **Name** | **Type** | **Description** |\n|--------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `stateFingerprint` | String | New fingerprint of the camera state (same as in `/osc/state` API). |\n| `throttleTimeout` | Integer | Recommended number of seconds for client to wait before next `checkForUpdates` call. Clients can make requests before `throttleTimeout` expires, and cameras should allow these early requests if possible. |\n\n### Client implementation notes:\n\n- Upon receiving a response, the client should compare the received `stateFingerprint` with its copy. If they don't match, the client should request the camera's current state using the `_/osc/state` API.\n- Smart clients will throttle requests regardless of the camera response. For example, if a camera returns a non-standard response (immediately, with *no change* and a low or 0 `throttleTimeout)`, the client should impose its own `throttleTimeout` before requesting another `checkForUpdates` from the camera.\n\n### Camera implementation notes:\n\n- When responding to `checkForUpdates`, the camera should determine a reasonable `throttleTimeout`. If the camera supports long standing request logic (respond only after `waitTimeout` if state hasn't changed), it is OK to return `throttleTimeout` as `0`. In this case, clients can immediately request updates.\n- If the camera supports only fast responses (*not recommended* ), it should return a reasonable `throttleTimeout` to avoid constant request/response traffic with the client. For example, a reasonable `throttleTimeout` would be 60 seconds, to allow one client request per minute.\n- The ***best practice*** is to return a `throttleTimeout` appropriate for the camera's capabilities. If the server cannot determine an appropriate `throttleTimeout` due to a server issue, the camera should respond with a 5XX status code and a JSON body containing `serverError` error code.\n\nError\n-----\n\n| **Error code** | **Description** |\n|-------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `missingParameter` | `stateFingerprint` is not specified. |\n| `invalidParameterName` | One or more input parameter names is unrecognized. |\n| `invalidParameterValue` | The parameter names are recognized, but one or more values is invalid; for example, `waitTimeout` is out of range or its type is incorrect. |\n| `serverError` | The server was unable to determine an appropriate `throttleTimeout` value for its response. The server problem will be identified by the 5XX value returned in the response. Camera manufacturers should supply a table of 5XX codes and corresponding server states that can throw this error. |\n\n| Example ------- ||\n|--------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **Request** | ```http 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 } ``` |\n| **Response** | ```http 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 } ``` |\n| **Request** | ```http 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 } ``` |\n| **Response** | ```http 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.\" } } ``` |"]]