CheckForUpdates
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
La API de /osc/checkForUpdates
identifica las actualizaciones de estado comparando el último stateFingerprint
conocido del cliente con el fingerprint
actual de la cámara.
Nombre |
Tipo |
Descripción |
stateFingerprint |
Cadena |
Huella digital del estado de la cámara de la última vez que el cliente llamó a /osc/state o /osc/checkForUpdates . |
waitTimeout |
Número entero (opcional) |
Cantidad de segundos que se debe esperar para que ocurra el cambio de estado en la cámara antes de devolver la respuesta. Cuando waitTimeout vence, la cámara debe devolver una respuesta, incluso si la huella dactilar no cambió. Si se detecta un cambio de estado antes de que venza waitTimeout , o si se omite waitTimeout , la cámara debe mostrar la respuesta de inmediato.Nota: La cámara puede mostrar una respuesta antes de que venza waitTimeout , incluso si no cambió la huella digital, pero la práctica recomendada es esperar hasta que venza waitTimeout . |
Notas sobre la implementación de la cámara:
- Tras recibir esta llamada, la cámara compara su huella digital de estado actual con el parámetro
stateFingerprint
recibido. Si la huella digital cambió, la cámara debe devolver de inmediato la nueva huella digital.
Salida
|
|
|
stateFingerprint |
Cadena |
Nueva huella digital del estado de la cámara (igual que en la API de /osc/state ). |
throttleTimeout |
Número entero |
Cantidad de segundos que el cliente debe esperar antes de la próxima llamada a checkForUpdates . Los clientes pueden realizar solicitudes antes del vencimiento de throttleTimeout , y las cámaras deben permitirlas, si es posible. |
Notas sobre la implementación del cliente:
- Tras recibir una respuesta, el cliente debe comparar el
stateFingerprint
recibido con su copia. Si no coinciden, el cliente debe solicitar el estado actual de la cámara mediante la API de _/osc/state
.
- Los clientes inteligentes limitarán las solicitudes independientemente de la respuesta de la cámara. Por ejemplo, si una cámara muestra una respuesta no estándar (inmediatamente, sin ningún cambio y un valor de
throttleTimeout)
bajo o de 0), el cliente debe imponer su propio throttleTimeout
antes de solicitar otro checkForUpdates
a la cámara.
Notas sobre la implementación de la cámara:
- Cuando responde a
checkForUpdates
, la cámara debe determinar un throttleTimeout
razonable. Si la cámara admite la lógica de solicitud antigua (responde solo después de waitTimeout
si el estado no cambió), puedes devolver throttleTimeout
como 0
. En ese caso, los clientes pueden solicitar actualizaciones de inmediato.
- Si la cámara solo admite respuestas rápidas (no se recomienda), debería mostrar un
throttleTimeout
razonable para evitar un tráfico constante de solicitudes o respuestas con el cliente. Por ejemplo, un throttleTimeout
razonable serían 60 segundos para permitir una solicitud de cliente por minuto.
- La práctica recomendada es mostrar un valor
throttleTimeout
apropiado para las capacidades de la cámara. Si el servidor no puede determinar un throttleTimeout
adecuado debido a un problema del servidor, la cámara debería responder con un código de estado 5XX y un cuerpo JSON que contenga el código de error serverError
.
Error
Código de error |
|
missingParameter |
No se especificó stateFingerprint . |
invalidParameterName |
No se reconocen uno o más nombres de parámetros de entrada. |
invalidParameterValue |
Se reconocen los nombres de los parámetros, pero uno o más valores no son válidos. Por ejemplo, waitTimeout está fuera de rango o su tipo es incorrecto. |
serverError |
El servidor no pudo determinar un valor de throttleTimeout apropiado para su respuesta. El problema del servidor se identificará con el valor 5XX devuelto en la respuesta. Los fabricantes de la cámara deben proporcionar una tabla de códigos 5XX y los estados de servidor correspondientes que pueden arrojar este error. |
Ejemplo |
Solicitud |
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
} |
Respuesta |
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
} |
Solicitud |
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
} |
Respuesta |
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."
}
} |
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2023-12-01 (UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Falta la información que necesito"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Muy complicado o demasiados pasos"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Desactualizado"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema de traducción"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema con las muestras o los códigos"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Otro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Fácil de comprender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Resolvió mi problema"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Otro"
}]