হালনাগাদ এর জন্য অনুসন্ধান করুন

/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 পরে সাড়া দিন), throttleTimeout 0 হিসাবে ফেরত দেওয়া ঠিক। এই ক্ষেত্রে, ক্লায়েন্ট অবিলম্বে আপডেট অনুরোধ করতে পারেন.
  • যদি ক্যামেরা শুধুমাত্র দ্রুত প্রতিক্রিয়া সমর্থন করে ( প্রস্তাবিত নয় ), ক্লায়েন্টের সাথে ক্রমাগত অনুরোধ/প্রতিক্রিয়া ট্র্যাফিক এড়াতে এটি একটি যুক্তিসঙ্গত 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

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