ตรวจสอบการอัปเดต
/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." } }
เนื้อหาของหน้าเว็บนี้ได้รับอนุญาตภายใต้ใบอนุญาตที่ต้องระบุที่มาของครีเอทีฟคอมมอนส์ 4.0 และตัวอย่างโค้ดได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 เว้นแต่จะระบุไว้เป็นอย่างอื่น โปรดดูรายละเอียดที่นโยบายเว็บไซต์ Google Developers Java เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2024-08-21 UTC
[null,null,["อัปเดตล่าสุด 2024-08-21 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"]]