अपडेट की जांच करें

/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."
    }
}