Node js : สวัสดี ฉันก็เป็น web server ได้นะ

หลังจากที่ได้ลอง hello world ไปแล้ว ทีนี่มาลองดูกันว่า node js จะทำตัวเป็น web server จะง่ายขนาดไหน

ให้ลองสร้างไฟล์ขึ้นมาอันหนึ่ง ในตัวอย่างนี่ผมจะใช้ชื่อว่า web_server.js

หลังจากนั้นให้ลอง copy code หน้าล่างนี้มารันดูกันก่อนครับ แล้วเราค่อยมาดูกันว่ามันจะทำงานอย่างไร

 

web server

 

จากนั้นลอง Run ดูครับ เหมือนเดิมครับ node web_server.js หลังจากนั้นคุณจะสามารถเข้าสู่ web server ได้จาก https://127.0.0.1:1234

hello world on web server

จะพบว่า เห้ยย มันเข้าได้วะ  แค่ code ไม่กี่บรรทัดทำให้เราสามารถสร้าง web server ด้วย node js ได้เลย

เอ้าาแล้วมันทำงานยังไงละ ? เราลองมาดู code ที่ละบรรทัดกันเล๊ยยย

 

จากภาพจะเป็นการทำงานของการทำ node js ให้เป็น web server 

web serve by nodejs

 

บรรทัดนี้จะเป็นเรียก Library ที่ชื่อ https มาเก็บไว้ในตัวแปร https ซึ่งชื่อตัวแปรเราสามารถเปลี่ยนมันเป็นอะไรก็ได้ จะ h ตัวเดียวก็ไม่มีใครว่า

เจ้า Library https นี้เป็นสิ่งที่ node js เตรียมไว้ให้อยู่แล้วแสดงว่าคุณไม่จำเป็นต้องติดตั้งเพิ่มเลย

ไว้บทความหน้าๆ เราจะมาบอกกันว่า Library มากมายที่มีอยู่ มีอะไรบ้างที่น่าใช้

 

 

หากมองตอนแรกจะคิดว่าเห้ย ทำไมมันดูเข้าใจยากกัน งั้นเราลองมามองแยกให้เป็นส่วนเล็กๆลงดูครับ

var server = https.createServer();

จะเป็นการเรียก function createServer ของ https มาเก็บไว้ในตัวแปรชื่อ server

ซึ่งหมายความว่าเรามีแค่บรรทัดนี้ กับ server.listen(1234);

ก็อาจจะทำให้เราสามารถสร้าง web server ที่ port  1234

ผมใช้คำว่าอาจ! เพราะจริงๆมันสร้างได้จริงแต่เวลา client เรียกใช้ปรากฏทำไมเว็บโหลดไม่เสร็จสักกกกกที

web can't open

มันก็จะหมุน จะรอไปเรื่อยๆ จน error ไป ทำไมละ?? ทำไมมันถึงรอ ? มันรออะไร?

สิ่งที่มันรอคือการตอบกลับจาก web server ทุก action ควรจะต้องมีการตอบกลับ

ถึงแม้หน้าเว็บที่เราเรียกจะไม่มี มันก็ควรจะตอบกลับมาบอกว่า ไม่มีนะ

ฉะนั้นเราก็ควรจะสร้าง action ให้กับมัน

จึงเป็นที่มาของ code ส่วนนี้

function(request,response){
response.end("Hello world");

}

หากใครเคยเขียน javascrIpt ก็คงจะเข้าใจมาอยู่แล้ว นี่คือการสร้าง function ที่ระบุพารามิเตอร์ 2 object

นั้นก็คือ request และ response ซึ่งตรงนี้จะเปลี่ยนชื่อเป็นอะไรก็ได้

โดยส่วนใหญ่จะนิยมเขียนย่อเป็น req, res แต่ขอเพียงว่าต้องคงลำดับไว้

 

response.end("Hello world");

response.end จะเป็นการจบการตอบกลับของ web server ซึ่งหมายความว่าจริงๆแล้วเราสามารถส่งอะไรกลับไปหา client ได้อีกหลายอย่าง

ไว้เราจะมาเล่าให้ฟังกันในบทความถัดไป

ฉะนั้นเพียงเพิ่ม response.end();  เข้าไปก็จะทำให้ client สามารถเรียก web server ของคุณได้แบบไม่ error แล้ว

แต่!! ถ้าจะให้มองเห็นภาพมากขึ้น เราจึงเพิ่มข้อความตอบกลับไปให้กับ client ด้วย

จึงเกิดเป็น

 

ปิ๊งง ลองเทส ลองเล่นดูนะครับ

 

อธิบายผิดหรือไม่เข้าใจตรงไหนสามารถส่งข้อความมาสอบถามได้เลย

 

 

ผิดพลาดประการใดขออภัย

 

ขอบคุณครับ

 

iMa8.

Leave a Reply