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