/osc/checkForUpdates API ক্লায়েন্টের সর্বশেষ পরিচিত stateFingerprint ক্যামেরার বর্তমান fingerprint সাথে তুলনা করে স্টেট আপডেট সনাক্ত করে।
ইনপুট
নাম
টাইপ
বর্ণনা
stateFingerprint
স্ট্রিং
ক্লায়েন্ট শেষবার থেকে ক্যামেরা স্টেট ফিঙ্গারপ্রিন্ট /osc/state বা /osc/checkForUpdates কল করেছে।
waitTimeout
পূর্ণসংখ্যা (ঐচ্ছিক)
প্রতিক্রিয়া ফেরত দেওয়ার আগে ক্যামেরার অবস্থা পরিবর্তনের জন্য অপেক্ষা করতে সেকেন্ডের সংখ্যা। waitTimeout শেষ হয়ে গেলে, আঙুলের ছাপ পরিবর্তন না করলেও ক্যামেরার একটি প্রতিক্রিয়া দেওয়া উচিত। waitTimeout মেয়াদ শেষ হওয়ার আগে যদি কোনও অবস্থার পরিবর্তন শনাক্ত করা হয়, বা waitTimeout বাদ দেওয়া হয়, ক্যামেরা অবিলম্বে প্রতিক্রিয়া ফিরিয়ে দেবে। দ্রষ্টব্য: আঙ্গুলের ছাপ পরিবর্তিত না হলেও waitTimeout শেষ হওয়ার আগে ক্যামেরা একটি প্রতিক্রিয়া ফেরত দিতে পারে, তবে waitTimeout শেষ না হওয়া পর্যন্ত অপেক্ষা করাই সেরা অনুশীলন ৷
ক্যামেরা বাস্তবায়ন নোট:
এই কল রিসিভ করার পর, ক্যামেরা তার বর্তমান স্টেট ফিঙ্গারপ্রিন্টকে প্রাপ্ত stateFingerprint প্যারামিটারের সাথে তুলনা করে। আঙুলের ছাপ পরিবর্তিত হলে, ক্যামেরাকে অবিলম্বে নতুন আঙ্গুলের ছাপ ফেরত দিতে হবে।
আউটপুট
নাম
টাইপ
বর্ণনা
stateFingerprint
স্ট্রিং
ক্যামেরা স্টেটের নতুন আঙ্গুলের ছাপ ( /osc/state API-এর মতো)।
throttleTimeout
পূর্ণসংখ্যা
পরবর্তী checkForUpdates কলের আগে ক্লায়েন্টকে অপেক্ষা করার জন্য প্রস্তাবিত সংখ্যার সেকেন্ড। throttleTimeout মেয়াদ শেষ হওয়ার আগে ক্লায়েন্টরা অনুরোধ করতে পারে এবং সম্ভব হলে ক্যামেরাগুলিকে এই প্রাথমিক অনুরোধগুলিকে অনুমতি দেওয়া উচিত।
ক্লায়েন্ট বাস্তবায়ন নোট:
একটি প্রতিক্রিয়া পাওয়ার পরে, ক্লায়েন্টকে প্রাপ্ত stateFingerprint সাথে তার কপির তুলনা করা উচিত। যদি সেগুলি মেলে না, ক্লায়েন্টকে _/osc/state API ব্যবহার করে ক্যামেরার বর্তমান অবস্থার জন্য অনুরোধ করা উচিত৷
স্মার্ট ক্লায়েন্টরা ক্যামেরার প্রতিক্রিয়া নির্বিশেষে অনুরোধগুলি থ্রোটল করবে। উদাহরণস্বরূপ, যদি একটি ক্যামেরা একটি অ-মানক প্রতিক্রিয়া প্রদান করে (অবিলম্বে, কোন পরিবর্তন ছাড়াই এবং একটি কম বা 0 throttleTimeout) , ক্যামেরা থেকে আরেকটি checkForUpdates অনুরোধ করার আগে ক্লায়েন্টকে তার নিজস্ব throttleTimeout আরোপ করা উচিত।
ক্যামেরা বাস্তবায়ন নোট:
checkForUpdates এ সাড়া দেওয়ার সময়, ক্যামেরার একটি যুক্তিসঙ্গত throttleTimeout নির্ধারণ করা উচিত। যদি ক্যামেরা দীর্ঘস্থায়ী অনুরোধ যুক্তি সমর্থন করে (অবস্থা পরিবর্তন না হলে শুধুমাত্র waitTimeout পরে সাড়া দিন), throttleTimeout0 হিসাবে ফেরত দেওয়া ঠিক। এই ক্ষেত্রে, ক্লায়েন্ট অবিলম্বে আপডেট অনুরোধ করতে পারেন.
যদি ক্যামেরা শুধুমাত্র দ্রুত প্রতিক্রিয়া সমর্থন করে ( প্রস্তাবিত নয় ), ক্লায়েন্টের সাথে ক্রমাগত অনুরোধ/প্রতিক্রিয়া ট্র্যাফিক এড়াতে এটি একটি যুক্তিসঙ্গত throttleTimeout প্রদান করবে। উদাহরণস্বরূপ, একটি যুক্তিসঙ্গত throttleTimeout হবে 60 সেকেন্ড, প্রতি মিনিটে একটি ক্লায়েন্ট অনুরোধের অনুমতি দিতে।
ক্যামেরার ক্ষমতার জন্য উপযুক্ত একটি throttleTimeout ফেরত দেওয়াই সর্বোত্তম অভ্যাস । সার্ভার সমস্যার কারণে যদি সার্ভার একটি উপযুক্ত throttleTimeout নির্ধারণ করতে না পারে, তাহলে ক্যামেরাটি একটি 5XX স্ট্যাটাস কোড এবং serverError ত্রুটি কোড সহ একটি JSON বডি দিয়ে প্রতিক্রিয়া জানাতে হবে।
ত্রুটি
ত্রুটি কোড
বর্ণনা
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-11-13 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"]]