/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)
ต่ำหรือ 0 เป็น 0 ไคลเอ็นต์ควรกำหนด throttleTimeout
ของตนเองก่อนที่จะขอ checkForUpdates
อีกครั้งจากกล้อง
หมายเหตุการใช้งานกล้อง
- เมื่อตอบสนองต่อ
checkForUpdates
กล้องควรระบุ throttleTimeout
ที่สมเหตุสมผล หากกล้องรองรับตรรกะคำขอแบบยืนยาว (ตอบกลับหลังจาก waitTimeout
เท่านั้นหากสถานะไม่เปลี่ยนแปลง) คุณสามารถแสดงผล throttleTimeout
เป็น 0
ได้ ในกรณีนี้ ไคลเอ็นต์จะขออัปเดตได้ทันที
- หากกล้องรองรับเฉพาะการตอบสนองที่รวดเร็ว (ไม่แนะนำ) ควรแสดงผล
throttleTimeout
ที่สมเหตุสมผลเพื่อหลีกเลี่ยงการส่งคำขอ/ตอบกลับไปยังไคลเอ็นต์อย่างต่อเนื่อง ตัวอย่างเช่น throttleTimeout
ที่สมเหตุสมผลคือ 60 วินาที เพื่ออนุญาตคำขอของไคลเอ็นต์ 1 รายการต่อนาที
- แนวทางปฏิบัติแนะนำคือให้ส่งคืน
throttleTimeout
ที่เหมาะสำหรับความสามารถของกล้อง หากเซิร์ฟเวอร์ระบุ throttleTimeout
ที่เหมาะสมไม่ได้เนื่องจากเซิร์ฟเวอร์มีปัญหา กล้องควรตอบกลับด้วยรหัสสถานะ 5XX และเนื้อหา JSON ที่มีรหัสข้อผิดพลาด serverError
ข้อผิดพลาด
รหัสข้อผิดพลาด |
คำอธิบาย |
missingParameter |
ไม่ได้ระบุ stateFingerprint |
invalidParameterName |
ไม่รู้จักชื่อพารามิเตอร์อินพุตอย่างน้อย 1 ชื่อ |
invalidParameterValue |
ระบบจดจำชื่อพารามิเตอร์ได้ แต่มีค่าอย่างน้อย 1 ค่าที่ไม่ถูกต้อง ตัวอย่างเช่น 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."
}
} |