/osc/checkForUpdates
API, क्लाइंट के आखिरी बार इस्तेमाल किए गए stateFingerprint
की तुलना, कैमरे के मौजूदा fingerprint
से करके, स्टेटस के अपडेट की पहचान करता है.
नाम |
स्ट्रीम किस तरह की है |
Description |
stateFingerprint |
String |
क्लाइंट के /osc/state या /osc/checkForUpdates पर कॉल किए जाने के समय का कैमरा स्थिति फ़िंगरप्रिंट. |
waitTimeout |
पूर्णांक (ज़रूरी नहीं) |
जवाब देने से पहले, कैमरे की स्थिति में बदलाव होने तक इंतज़ार करने के लिए सेकंड की संख्या. waitTimeout की समयसीमा खत्म होने पर, फ़िंगरप्रिंट का अंतर न होने पर भी, कैमरे को जवाब के तौर पर जवाब देना चाहिए. अगर waitTimeout की समयसीमा खत्म होने से पहले स्थिति में बदलाव का पता चलता है या waitTimeout को हटाया जाता है, तो कैमरे को तुरंत जवाब मिल जाना चाहिए.ध्यान दें: फ़िंगरप्रिंट की समयसीमा खत्म होने से पहले, कैमरा जवाब दे सकता है. भले ही, फ़िंगरप्रिंट की समयसीमा खत्म न हुई हो. हालांकि, सबसे सही तरीका है कि waitTimeout की समयसीमा खत्म होने तक इंतज़ार करें.waitTimeout |
कैमरा लागू करने से जुड़ी जानकारी:
- यह कॉल मिलने पर, कैमरा अपने मौजूदा फ़िंगरप्रिंट की तुलना, मिले
stateFingerprint
पैरामीटर से करता है. फ़िंगरप्रिंट बदलने पर, कैमरे को तुरंत नया फ़िंगरप्रिंट वापस मिल जाना चाहिए.
आउटपुट
|
|
|
stateFingerprint |
String |
कैमरे की स्थिति का नया फ़िंगरप्रिंट (/osc/state एपीआई के जैसा). |
throttleTimeout |
Integer |
सुझाए गए सेकंड की संख्या, ताकि क्लाइंट अगले checkForUpdates कॉल से पहले इंतज़ार कर सके. क्लाइंट, throttleTimeout की समयसीमा खत्म होने से पहले अनुरोध कर सकते हैं. अगर हो सके, तो कैमरे इन अनुरोधों को अनुमति दें. |
क्लाइंट को लागू करने से जुड़ी जानकारी:
- जवाब मिलने के बाद, क्लाइंट को मिले
stateFingerprint
की तुलना उसकी कॉपी से करनी चाहिए. अगर दी गई जानकारी मेल नहीं खाती है, तो क्लाइंट को _/osc/state
एपीआई का इस्तेमाल करके, कैमरे की मौजूदा स्थिति के बारे में अनुरोध करना चाहिए.
- स्मार्ट क्लाइंट, अनुरोधों को कम कर देते हैं, भले ही कैमरे पर कोई कार्रवाई न हुई हो. उदाहरण के लिए, अगर कोई कैमरा नॉन-स्टैंडर्ड जवाब देता है (तुरंत, कोई बदलाव नहीं और कम या 0
throttleTimeout)
के साथ, तो कैमरे से दूसरे checkForUpdates
का अनुरोध करने से पहले क्लाइंट को अपना throttleTimeout
लागू करना चाहिए.
कैमरा लागू करने से जुड़ी जानकारी:
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."
}
} |