/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
[null,null,["आखिरी बार 2024-08-21 (UTC) को अपडेट किया गया."],[[["The `/osc/checkForUpdates` API allows clients to efficiently check for camera state changes without repeatedly requesting the full state."],["Clients provide their last known state fingerprint, and the camera responds with a new fingerprint if the state has changed."],["A `throttleTimeout` value is provided to guide clients on how frequently to check for updates, optimizing network traffic."],["If the camera's state has not changed, it may wait for a specified `waitTimeout` before responding to avoid unnecessary updates."],["Errors are provided if parameters are missing, invalid, or if the server encounters an issue determining an appropriate `throttleTimeout`."]]],["The `/osc/checkForUpdates` API checks for camera state changes. The client sends its `stateFingerprint` and an optional `waitTimeout`. The camera compares the received `stateFingerprint` with its current one, immediately returning the new fingerprint if changed. The camera also returns a `throttleTimeout` suggesting how long the client should wait before its next check. If the fingerprints match or after the wait time expires, a response is sent. Clients then request the current state if fingerprints don't match.\n"]]