/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 وضعیت فعلی دوربین را درخواست کند.
مشتریان هوشمند بدون توجه به پاسخ دوربین، درخواست ها را کنترل می کنند. به عنوان مثال، اگر یک دوربین یک پاسخ غیر استاندارد (فورا، بدون تغییر و یک throttleTimeout) را برگرداند، مشتری باید قبل از درخواست checkForUpdates دیگر از دوربین، throttleTimeout خود را اعمال کند.
نکات پیاده سازی دوربین:
هنگام پاسخ دادن به checkForUpdates , دوربین باید یک throttleTimeout معقول را تعیین کند . اگر دوربین از منطق درخواست طولانی مدت پشتیبانی می کند (اگر وضعیت تغییر نکرده است، فقط پس از waitTimeout پاسخ دهید)، خوب است که throttleTimeout0 برگردانید. در این حالت، مشتریان می توانند بلافاصله درخواست به روز رسانی کنند.
اگر دوربین فقط از پاسخهای سریع پشتیبانی میکند ( توصیه نمیشود )، باید یک 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
تاریخ آخرین بهروزرسانی 2024-11-13 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2024-11-13 بهوقت ساعت هماهنگ جهانی."],[[["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"]]