แก้ปัญหาการเชื่อมต่อโทรศัพท์
การทำงานของการเชื่อมต่อ
ฝั่ง studio (เบราว์เซอร์เดสก์ท็อป) เปิดการเชื่อมต่อ PeerJS และสร้าง PIN 6 ตัวอักษร PIN ถูกฝังลงใน QR code เป็นส่วนหนึ่งของ URL ฝั่งโทรศัพท์ screenshotify.app/app?peer=ID&pin=PIN โทรศัพท์สแกน QR เปิด URL แล้วเชื่อมต่อกลับไปยัง studio ตรวจสอบ PIN แล้วเปิด data channel จากนั้นปุ่ม photo-picker ของโทรศัพท์ส่งข้อมูลรูปภาพโดยตรงไปยัง studio ผ่าน WebRTC
หาก QR ไม่เชื่อมต่อ
- ทั้งสองเบราว์เซอร์ต้องรองรับ WebRTC Safari 17+, Chrome 100+, Firefox 100+, Edge Safari รุ่นเก่าไม่มี data-channel API ที่เปิดใช้งาน
- ทั้งสองต้องมีอินเทอร์เน็ต การเชื่อมต่อใช้ signaling server ของ PeerJS เพื่อตั้งค่าการเชื่อมต่อโดยตรงหากไม่มีการเชื่อมต่อที่ใช้งานได้ QR handshake จะล้มเหลว
- ไฟร์วอลล์องค์กร/โรงเรียนมักบล็อก WebRTC หากอยู่บนเครือข่าย guest หรือ VPN องค์กร traffic STUN/TURN ของ WebRTC อาจถูกกรองลองใช้ mobile hotspot จากโทรศัพท์
- Auth-handshake timeout เมื่อโทรศัพท์เชื่อมต่อกับ data channel ของ studio มีหน้าต่าง 3 วินาทีในการส่ง auth message หาก handshake หยุดชะงัก (เครือข่ายกระตุก tab เบราว์เซอร์ถูก background) studio จะตัดการเชื่อมต่อคลิก "Connect phone" อีกครั้งเพื่อเริ่ม session ใหม่ PIN ยังใช้ได้ตลอดเวลาที่ modal เปิดอยู่
"Camera permission denied" บน iOS Safari
iOS Safari จำกัดการเข้าถึงกล้องอย่างเข้มงวดตรวจสอบสามสิ่งนี้:
- Safari Settings → Camera → Ask หรือ Allow สำหรับ screenshotify.app
- QR scanner ที่ใช้ไม่ต้องการสิทธิ์กล้องของเรา — เป็น QR scanner ของระบบ
- หากใช้ Files picker (ไม่ใช่กล้อง) ไม่ต้องการสิทธิ์กล้องเลย
"Not connected" หลังสแกน
data channel เปิดแล้วแต่ฝั่ง studio ไม่ acknowledge โทรศัพท์มักหมายความว่า PIN check หมดเวลาก่อนที่โทรศัพท์จะส่ง auth message ได้ปิด tab โทรศัพท์สร้าง QR ใหม่ฝั่ง studio แล้วสแกนอีกครั้ง
เชื่อมต่อได้แต่รูปภาพไม่ปรากฏ
ข้อมูลรูปภาพไปในทิศทางเดียว: โทรศัพท์ → studio หาก studio ไม่แสดงรูปภาพหลังจากโทรศัพท์แจ้ง "Sent" ตรวจสอบ:
- เครื่องมือแก้ไข studio ยังเปิดอยู่ใน tab เบราว์เซอร์เดิมที่สแกน QR
- คุณไม่ได้นำทางไปยังหน้าอื่นฝั่ง studio (การเชื่อมต่อจะหลุด)
- รูปภาพมีขนาดต่ำกว่า 5 MB การ capture ขนาดใหญ่มากบางครั้งทำให้ data channel สะดุด
หมายเหตุความเป็นส่วนตัว
ข้อมูลภาพหน้าจอเดินทางจากโทรศัพท์ไปยัง studio โดยตรงผ่าน WebRTC ไม่มีอะไรผ่านเซิร์ฟเวอร์ของ Screenshotify signaling server (PeerJS) เห็นเพียงว่า peer สองรายต้องการเชื่อมต่อ — ไม่เห็น payload รูปภาพ