การผสานรวมความสามารถ

บทนี้จะแนะนำวิธีการผสานการทำงานของ FIRERAP Remote Desktop และความสามารถที่เกี่ยวข้อง คุณสามารถนำไปผสานรวมเข้ากับหน้าฟรอนต์เอนด์ (frontend) ของคุณเองเพื่อใช้งานฟังก์ชันต่างๆ เช่น การควบคุม การแสดงผล เป็นต้น เราจะไม่อธิบายรายละเอียดในบทนี้ แต่คุณสามารถไปที่เอกสาร APIFOX ของเราเพื่อดูและทดสอบได้ อย่างไรก็ตาม เราจะแนะนำการตั้งค่าเบื้องต้นและข้อมูลพื้นฐานอื่นๆ ที่จำเป็นให้คุณทราบ

คำแนะนำ

เนื้อหาต่อไปนี้ต้องการให้คุณมีความเข้าใจพื้นฐานเกี่ยวกับ Websocket, การวาด Canvas, H.264 และอื่นๆ

การตั้งค่าเบื้องต้น

เพื่อให้คุณทดสอบ API ได้สะดวก ขั้นแรก โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์เชื่อมต่อกับคอมพิวเตอร์ปัจจุบันผ่าน USB และไม่ได้เปิดใช้งานการยืนยันใบรับรองการเข้าสู่ระบบ (https) หลังจากทำสองขั้นตอนนี้เสร็จแล้ว คุณยังต้องตั้งค่าที่เกี่ยวข้องบนแพลตฟอร์ม apifox ให้เสร็จสิ้น เนื่องจากเกี่ยวข้องกับอินเทอร์เฟซ ws (ws interface) คุณจำเป็นต้องติดตั้ง apifox client สำหรับคอมพิวเตอร์ (ไม่ใช่เวอร์ชันเว็บ) และนำเข้า (import) โปรเจกต์ที่เกี่ยวข้องเข้ามาใน client ของคุณ เราจะไม่อธิบายวิธีการติดตั้งและนำเข้า โปรดศึกษาด้วยตนเอง

วิดีโอแบบเรียลไทม์

วิดีโอแบบเรียลไทม์ใช้ Websocket ในการส่งข้อมูล วิดีโอรองรับรูปแบบการส่งข้อมูลสองแบบ คือ MJPEG (MOTION JPEG) และ H.264 NALU ในบรรดาสองแบบนี้ MJPEG เป็นวิธีที่ใช้งานง่ายที่สุด เนื้อหาที่ส่งผ่าน MJPEG จริงๆ แล้วคือภาพหน้าจอ (screenshot) ของอุปกรณ์ในขณะนั้น เมื่อส่งข้อมูลเร็วพอ ก็จะกลายเป็นภาพหน้าจออุปกรณ์แบบเรียลไทม์ที่เคลื่อนไหวได้ สิ่งเดียวที่คุณต้องทำคือการนำข้อความ (message) ทุกเฟรมที่ได้รับจาก Ws มาวาดลงบนหน้าจอในรูปแบบ JPEG ส่วนอีกแบบคือ H.264 ซึ่งต้องการความรู้พื้นฐานจากคุณค่อนข้างสูง เนื่องจากก่อนที่จะเรนเดอร์ (render) ลงบน canvas คุณจะต้องทำการถอดรหัส (decode) ก่อนหนึ่งขั้นตอน คุณสามารถค้นหาด้วยตนเองหรือผสานรวมตัวถอดรหัส (decoder) h264 ที่มีอยู่แล้วเพื่อทำการถอดรหัสและวาดภาพ

ความแตกต่างระหว่าง H264 และ MJPEG คือ โดยทั่วไปแล้ว H264 สามารถลดปริมาณการใช้ข้อมูล (traffic) ลงได้อย่างน้อยครึ่งหนึ่ง และมีความเร็วสูงกว่า แน่นอนว่ามันไม่ได้เหมาะกับทุกอุปกรณ์ อุปกรณ์บางรุ่นอาจมีประสิทธิภาพในการเข้ารหัส (encode) H264 ไม่สูงนัก ในกรณีนี้ คุณควรใช้ MJPEG ในการส่งข้อมูล แน่นอนว่า MJPEG ก็มีข้อเสียเช่นกัน เนื่องจากทุกเฟรมเป็นภาพนิ่ง จึงต้องการแบนด์วิดท์ (bandwidth) ที่สูง

การควบคุมแบบสัมผัสเรียลไทม์

การควบคุมแบบสัมผัสเรียลไทม์ก็ใช้ Websocket ในการส่งข้อมูลเช่นกัน ซึ่งไม่มีอะไรซับซ้อน คุณเพียงแค่ต้องส่งการกระทำสามอย่างตามรูปแบบที่กำหนด คือ กดลง (down), เลื่อน (move), และยกขึ้น (up) คุณสามารถทำได้ผ่านอีเวนต์ (event) ของหน้าเว็บ เช่น mousedown, up เป็นต้น ข้อมูลหลักที่ส่งคืออีเวนต์และพิกัด (coordinates) สิ่งเดียวที่ต้องให้ความสนใจที่นี่คือเรื่องของพิกัด ซึ่งคุณจำเป็นต้องแปลงค่าโดยอิงจากขนาดของ canvas และขนาดของหน้าจอจริง เพื่อคำนวณหาพิกัดบนหน้าจอจริงที่สอดคล้องกับพิกัดที่ผู้ใช้กระทำบน canvas

การสั่งงานด้วยปุ่ม

การสั่งงานด้วยปุ่มถือเป็นส่วนที่ง่ายที่สุด คุณเพียงแค่ต้องส่งคำขอ POST (POST request) ไปยังอินเทอร์เฟซ (interface) ที่เกี่ยวข้องตามรูปแบบที่กำหนด การสั่งงานด้วยปุ่มรองรับการควบคุมปุ่มนำทาง (navigation keys) ของอุปกรณ์และการป้อนข้อมูลภาษาอังกฤษทั่วไป

Command Terminal

Command Terminal ใช้ Websocket ในการทำงาน คุณจำเป็นต้องใช้เทคโนโลยีที่เกี่ยวข้อง เช่น xterm.js เพื่อทำการเชื่อมต่อ คุณเพียงแค่ต้องจัดรูปแบบอินพุตและเอาต์พุต (input/output) ให้เป็นไปตามรูปแบบที่กำหนดในเอกสาร API แล้วส่งออกไป หรือร้องขอให้ xterm แสดงผลลัพธ์ออกมา

คำสั่งแบบเรียลไทม์