ก่อนอื่นเลย บทความนี้อาจจะพูดแค่ในมุมมองเดียวคือมุมมองของการเดฟบนเครื่องคอมพิวเตอร์ ดังนั้นจึงไม่ได้พูดให้สามารถครอบคลุมหรือครบถ้วนสมบูรณ์ได้ หากใครรู้สึกว่าเอ๊ะๆๆ ไม่ถูกเหมือนที่เราเข้าใจเลยนี่นา ต้องขออภัยด้วยค่ะ
localhost คือเครื่องคอมพิวเตอร์ของเรา
ปกติ Localhost หรือ IP Address 127.0.0.1 เกิดจากการ run server บนเครื่องของตัวเอง คนที่สามารถเข้าถึงก็จะมีแค่เจ้าของเครื่องเท่านั้น หรือถ้าอยู่วง LAN เดียวกันก็อาจจะเข้าด้วย IP Address ที่ Router แจกให้ก็ได้
แต่ถ้าอยู่นอกวง LAN มันก็จะทำไม่ได้ถ้าเครื่องที่ถูกเข้าถึงนั้นไม่ได้มีการทำ Public IP เนี่ยสิ
แล้วเราจะให้คนจากภายนอกเข้ามาที่ localhost เราทำไม?
ส่วนใหญ่ที่เราจะทำแบบนี้ก็ตอนที่ต้องการทดสอบการทำ Webhook อะไรสักอย่าง เผื่อใครนึกภาพไม่ออกก็อย่างเช่นการทำงานที่เกี่ยวกับ Line Developer หรือ Facebook Developer เป็นต้น
หรือการทำให้คนจากภายนอกเข้ามาติดต่อกับเครื่องคอมพิวเตอร์ของเรา แต่เขาช่างอยู่ห่างไกล(ใกล้)เหลือเกิน
แล้วเราจะให้คนจากภายนอกเข้ามาที่ localhost เราได้อย่างไร?
จริงๆก็มีด้วยกันหลายวิธี อาจจะทำ Public IP ก็ได้ หรือจะใช้เครื่องมือช่วยก็ได้ ซึ่งจะแนะนำเครื่องมือเฉพาะที่เคยใช้และเวิร์คสำหรับเรานะคะ
เครื่องมือที่ช่วยในการ Access Localhost
ngrok
หลายๆคนน่าจะเคยรู้จัก ngrok (อ่านว่าเอ็น-จี-ร็อก / เอ็น-กร็อก เรียกไม่เหมือนกันสักคน 😅) ใช้งานง่ายมาก แนะนำให้เข้าเว็บ https://ngrok.com/ แล้วกด Get started for free เลย
หลังจาก Download ngrok แล้วพิมพ์คำสั่งบน terminal
./ngrok https {port}ถ้าในที่นี้ port คือ 80 ก็ใส่ไป./ngrok https 80
หลังจากนั้นก็เอาลิงก์ที่ได้ไปเข้าด้วยเครื่องอื่นเพื่อทดสอบ
เข้าได้แฮะ!
ง่ายมากๆ
localtunnel
ติดตั้งง่ายๆสำหรับบนเครื่องที่มี Node.js แล้ว
npm install -g localtunnel
สำหรับใครที่ไม่มีสามารถติดตั้ง Node.js ได้จากเว็บนี้เลย
Download | Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
คำสั่งสำหรับ Run ต่อจากนี้เราจะไม่ใช้ lt --port 8000
ที่ได้จาก Doc ของมันเพราะมันไม่เวิร์กล่ะ
หลังจากไปสืบเสาะมาจาก issue ใน repo นั้น เราก็ได้เพิ่ม url เข้าไป 👀
lt -h "https://serverless.social" -p {port}ถ้าในที่นี้ port คือ 80 ก็ใส่ไปlt -h "https://serverless.social" -p 80
ไหนลองทดสอบซิ
It works!
It works!
สรุป
หลักๆที่เราจะทำแบบนี้ก็เพื่อการเดฟซะส่วนใหญ่ สมมติว่าเราต้องการทำ Chatbot บน Facebook ในขณะที่เราเทสก็จำเป็นที่จะต้องทำ Webhook เพื่อให้ Facebook ส่ง Response มาที่เราได้ แต่การจะทำแบบนั้นได้จะต้องทำให้เครื่องคอมของเราเป็น server ที่มี https ซึ่งจะเป็นได้ก็ต้องอาศัยเครื่องมือเหล่านี้อีกที หวังว่าจะเห็นภาพกันมากขึ้นนะคะ
ถ้าไม่จำเป็นหลังจากเลิกเทสแล้วก็อย่าลืมปิดเครื่องมือเหล่านี้ด้วยล่ะ!