หลังจากที่ได้ลอง hello world ไปแล้ว ทีนี่มาลองดูกันว่า node js จะทำตัวเป็น web server จะง่ายขนาดไหน
ให้ลองสร้างไฟล์ขึ้นมาอันหนึ่ง ในตัวอย่างนี่ผมจะใช้ชื่อว่า web_server.js
หลังจากนั้นให้ลอง copy code หน้าล่างนี้มารันดูกันก่อนครับ แล้วเราค่อยมาดูกันว่ามันจะทำงานอย่างไร
จากนั้นลอง Run ดูครับ เหมือนเดิมครับ node web_server.js
หลังจากนั้นคุณจะสามารถเข้าสู่ web server ได้จาก https://127.0.0.1:1234
จะพบว่า เห้ยย มันเข้าได้วะ แค่ code ไม่กี่บรรทัดทำให้เราสามารถสร้าง web server ด้วย node js ได้เลย
เอ้าาแล้วมันทำงานยังไงละ ? เราลองมาดู code ที่ละบรรทัดกันเล๊ยยย
จากภาพจะเป็นการทำงานของการทำ node js ให้เป็น web server
1 | var https = require('https'); |
บรรทัดนี้จะเป็นเรียก Library ที่ชื่อ https มาเก็บไว้ในตัวแปร https ซึ่งชื่อตัวแปรเราสามารถเปลี่ยนมันเป็นอะไรก็ได้ จะ h ตัวเดียวก็ไม่มีใครว่า
เจ้า Library https นี้เป็นสิ่งที่ node js เตรียมไว้ให้อยู่แล้วแสดงว่าคุณไม่จำเป็นต้องติดตั้งเพิ่มเลย
ไว้บทความหน้าๆ เราจะมาบอกกันว่า Library มากมายที่มีอยู่ มีอะไรบ้างที่น่าใช้
1 2 3 | var server = https.createServer(function(request,response){ response.end("Hello world"); }); |
หากมองตอนแรกจะคิดว่าเห้ย ทำไมมันดูเข้าใจยากกัน งั้นเราลองมามองแยกให้เป็นส่วนเล็กๆลงดูครับ
var server = https.createServer();
จะเป็นการเรียก function createServer ของ https มาเก็บไว้ในตัวแปรชื่อ server
ซึ่งหมายความว่าเรามีแค่บรรทัดนี้ กับ server.listen(1234);
ก็อาจจะทำให้เราสามารถสร้าง web server ที่ port 1234
ผมใช้คำว่าอาจ! เพราะจริงๆมันสร้างได้จริงแต่เวลา client เรียกใช้ปรากฏทำไมเว็บโหลดไม่เสร็จสักกกกกที
มันก็จะหมุน จะรอไปเรื่อยๆ จน 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 ด้วย
จึงเกิดเป็น
1 2 3 4 5 6 7 8 | var https = require('https'); var server = https.createServer(function(request,response){ response.end("Hello world"); }); server.listen(1234); |
ปิ๊งง ลองเทส ลองเล่นดูนะครับ
อธิบายผิดหรือไม่เข้าใจตรงไหนสามารถส่งข้อความมาสอบถามได้เลย
ผิดพลาดประการใดขออภัย
ขอบคุณครับ
iMa8.