CheckForUpdates
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
L'API /osc/checkForUpdates
identifica gli aggiornamenti di stato confrontando l'ultimo stateFingerprint
noto del client con l'attuale fingerprint
della videocamera.
Nome |
Digitare |
Descrizione |
stateFingerprint |
Stringa |
Fingerprint dello stato della videocamera ottenuta dall'ultima volta che il client ha chiamato /osc/state o /osc/checkForUpdates . |
waitTimeout |
Numero intero (facoltativo) |
Numero di secondi di attesa prima che si verifichi un cambiamento di stato sulla videocamera prima di restituire la risposta. Alla scadenza di waitTimeout , la fotocamera dovrebbe restituire una risposta anche se l'impronta non è cambiata. Se viene rilevato un cambiamento di stato prima della scadenza di waitTimeout o se waitTimeout viene omesso, la videocamera dovrebbe restituire immediatamente la risposta.Nota: la videocamera può restituire una risposta prima della scadenza di waitTimeout anche se la fingerprint non è cambiata, ma la best practice è attendere la scadenza di waitTimeout . |
Note sull'implementazione di Fotocamera:
- Alla ricezione di questa chiamata, la videocamera confronta la propria impronta dello stato attuale con il parametro
stateFingerprint
ricevuto. Se l'impronta è cambiata, la fotocamera deve restituire immediatamente la nuova impronta.
Output
|
|
|
stateFingerprint |
Stringa |
Nuova impronta dello stato della fotocamera (come nell'API /osc/state ). |
throttleTimeout |
Numero intero |
Numero consigliato di secondi che il cliente deve attendere prima della prossima chiamata checkForUpdates . I client possono effettuare richieste prima della scadenza di throttleTimeout e le videocamere dovrebbero consentire queste richieste in anticipo, se possibile. |
Note sull'implementazione del client:
- Dopo aver ricevuto una risposta, il client deve confrontare il
stateFingerprint
ricevuto con la sua copia. Se non corrispondono, il client deve richiedere lo stato attuale della videocamera utilizzando l'API _/osc/state
.
- I client intelligenti limiteranno le richieste indipendentemente dalla risposta della videocamera. Ad esempio, se una videocamera restituisce una risposta non standard (immediatamente, con nessuna modifica e un valore
throttleTimeout)
basso o pari a 0, il client deve imporre il proprio throttleTimeout
prima di richiedere un altro checkForUpdates
alla videocamera.
Note sull'implementazione di Fotocamera:
- Quando rispondi a
checkForUpdates
, la fotocamera dovrebbe determinare un valore throttleTimeout
ragionevole. Se la videocamera supporta la logica di richiesta di lunga data (rispondi solo dopo waitTimeout
se lo stato non è cambiato), puoi restituire throttleTimeout
come 0
. In questo caso, i clienti possono richiedere immediatamente gli aggiornamenti.
- Se la videocamera supporta solo risposte rapide (non consigliato), dovrebbe restituire un valore
throttleTimeout
ragionevole per evitare un traffico di richieste/risposte costante con il client. Ad esempio, un valore throttleTimeout
ragionevole corrisponde a 60 secondi, per consentire una richiesta del client al minuto.
- La best practice consiste nel restituire un
throttleTimeout
appropriato per le funzionalità della fotocamera. Se il server non riesce a determinare un throttleTimeout
appropriato a causa di un problema del server, la videocamera deve rispondere con un codice di stato 5XX e un corpo JSON contenente il codice di errore serverError
.
Errore
Codice di errore |
|
missingParameter |
stateFingerprint non è specificato. |
invalidParameterName |
Uno o più nomi di parametri di input non sono riconosciuti. |
invalidParameterValue |
I nomi dei parametri vengono riconosciuti, ma uno o più valori non sono validi; ad esempio, waitTimeout è fuori intervallo o il suo tipo non è corretto. |
serverError |
Il server non è riuscito a determinare un valore throttleTimeout appropriato per la risposta. Il problema del server verrà identificato dal valore 5XX restituito nella risposta. I produttori di videocamere devono fornire una tabella contenente i codici 5XX e gli stati del server corrispondenti che possono generare questo errore. |
Esempio |
Richiedi |
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
} |
Risposta |
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
} |
Richiedi |
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
} |
Risposta |
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 quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2023-12-01 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Mancano le informazioni di cui ho bisogno"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Troppo complicato/troppi passaggi"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Obsoleti"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema di traduzione"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema relativo a esempi/codice"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Altra"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Facile da capire"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Il problema è stato risolto"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Altra"
}]