/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
پاسخ دهید)، خوب است که 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."
}
} |