Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > Community Zone > Forum > มือใหม่หัดเขียน NodeJs ผลัดมาตั้งนาน กว่าจะได้โอกาส



 

มือใหม่หัดเขียน NodeJs ผลัดมาตั้งนาน กว่าจะได้โอกาส

 



Topic : 135436



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์




เพิ่งจะได้โอกาสลง โปรแกรม และทดลองเขียน โมฯแบบ เบๆ เลย แบบ ยังอ่านตัวอย่างไม่กี่หน้า

ลง nodejs บน Centos7
login ด้วย root
คำสั่งแรก
yum update -y
คำสั่งที่ 2
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
คำสั่งที่ 3
yum install nodejs
คำสั่งที่ 4
firewall-cmd --add-port=8080/tcp --zone=public --permanent
คำสั่งที่ 5
firewall-cmd --reload

ต่อไปก็ สร้าง folder มาซักอัน แล้วย้ายเข้าไปในนั้น cd xxxxx
สร้างไฟล์ icon มาใช้งานด้วยนะครับ
favicon.ico
อย่าลืมนะครับเดี๋ยวโปรแกรม error นะครับ เพราะไม่ได้ตรวจเช็คอะไรเลย 55555

สร้างไฟล์ ทดสอบ node1.js
Code (JavaScript)
var http = require('http'), fs = require('fs');//, favicon = require('serve-favicon');
const favicon = fs.readFileSync('favicon.ico'); // read file
http.createServer(function (req, res) {
	var str = req.url.split('/');
	switch(str[1]){
		case 'favicon.ico':
			res.statusCode = 200;
			res.setHeader('Content-Length', favicon.length);
			res.setHeader('Content-Type', 'image/x-icon');
			res.setHeader("Cache-Control", "public, max-age=2592000"); // expiers after a month
			res.setHeader("Expires", new Date(Date.now() + 2592000000).toUTCString());
			res.end(favicon);
			break;
		case 'Home':
			res.writeHead(200, {'Content-Type': 'text/html'});
			res.write('<!doctype html><html><head><title>Chaidhanan</title></head><body>TEST NodeJs</body></html>');
			res.end();
			break;
		default: 
			console.log(str);
			res.end();
	}
}).listen(8080);


คำสั่งเปิดโปรแกรม
node node1.js

ทดสอบด้วย browser http:\\192.168.1.21:8080/Home

เมื่ออ่านเรื่อง session เสร็จจะมาโพสต่อ 555555



Tag : Node.js, Linux









ประวัติการแก้ไข
2020-07-31 17:32:34
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2020-07-31 17:29:12 By : Chaidhanan View : 1191 Reply : 3
 

 

No. 1



โพสกระทู้ ( 1,458 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

ปูเสื่อนอนรอ อาจได้กลับมาทบทวนความรู้ในภายภาคหน้า






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-08-03 14:04:52 By : PhrayaDev
 


 

No. 2



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


ก่อน ที่จะไป session ขอต่อด้วย https ก่อนนะครับ พอดี isp ที่บ้าน เป็น AIS เขาให้ใช้ https: แบบ auto ไม่ใช้ไม่ได้
ต้องขอบอกนะครับ ผมเขียนไปด้วย อ่าน document ไปด้วยนะครับ 55555 ก็จาก topic มือใหม่หัดเขียน nodejs 55555
อาจจะวนไปวนมา บ้างนะครับ
################################
เริ่มต้นก็ต้องเตรียมไฟล์ certificate ก่อน ผมใช้บริการของเวปนี้ ฟรีทุก 3 เดือน ครบ 3 เดือน เข้าไปยกเลิก ของเก่าแล้ว สร้าง ใหม่ 5555
https://www.sslforfree.com/
ค่อย ไล่ไปที่ละเสตป ใช้การสร้าง ด้วย http download นะครับ (feature สุดท้าย)
เราจะได้ ไฟล์ มา 3 ไฟล์ (ใช้แค่ 2)
ca_bundle.crt -- ไม่ใช้
certificate.crt
private.key

นำไฟล์ ที่ได้ไปใส่ใน folder ของ project
จบเรื่อง สร้างไฟล์ certificate
################################
ตัวอย่าง โปรแกรม
Code (JavaScript)
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const router = express.Router();

var https = require('https'), fs = require('fs');
var port = process.env.PORT || 443;
const options = {
  key:  fs.readFileSync('../Certificate/private.key'),
  cert: fs.readFileSync('../Certificate/certificate.crt')
};
const favicon = fs.readFileSync('../favicon.ico'); // read file

const app = express();
//app.use(session({secret: 'ssshhhhh',saveUninitialized: true,resave: true}));
app.use(session({secret: 'HKEncript', saveUninitialized: true, resave: true}));
app.use(bodyParser.json());      
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static(__dirname + '/views'));

var sess; // global session, NOT recommended

router.get('/',(req,res) => {
	sess = req.session;
	if(sess.email) {
		return res.redirect('/admin');
	}
	res.sendFile('index.html');
});

router.post('/login',(req,res) => {
	sess = req.session;
	sess.email = req.body.email;
	res.end('done');
});

router.get('/favicon.ico',(req,res) => {
	res.statusCode = 200;
	res.setHeader('Content-Length', favicon.length);
	res.setHeader('Content-Type', 'image/x-icon');
	res.setHeader("Cache-Control", "public, max-age=2592000"); // expiers after a month
	res.setHeader("Expires", new Date(Date.now() + 2592000000).toUTCString());
	res.end(favicon);
});

router.get('/admin',(req,res) => {
	sess = req.session;
	if(sess.email) {
		res.write(`<h1>Hello ${sess.email} </h1><br>`);
		res.end('<a href='+'/logout'+'>Logout</a>');
	}
	else {
		res.write('<h1>Please login first.</h1>');
		res.end('<a href='+'/'+'>Login</a>');
	}
});

router.get('/logout',(req,res) => {
	req.session.destroy((err) => {
		if(err) {
			return console.log(err);
		}
		res.redirect('/');
	});
});
app.use('/', router);
var server = https.createServer(options, app);
server.listen( port, function () {
    console.log( 'Hello Web Server listening on port ' + server.address().port );
});




ประวัติการแก้ไข
2020-08-03 14:49:04
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-08-03 14:43:15 By : Chaidhanan
 

 

No. 3



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


จากตัวอย่าง คห 2 ที่มาของโปรแกรม ไม่ได้เขียนแบบ basic (pure javascript) แล้ว
แต่ใช้เครื่องมือของ nodejs ที่ช่วยสร้าง โปรแกรม เริ่มต้นให้กับ ชื่อว่า npm

เริ่มสร้าง project
npm init --y
โปรแกรมจะสร้าง file: package.json ให้เรา
Code
{ "name": "test", # ชื่อของ project folder "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "ใส่ชื่อตัวเองเลย", "license": "ISC" }


แล้วต่อด้วยคำสั่ง
npm install --save express express-session body-parser
ซื่งโปรแกรม จะสร้าง ไฟล์ที่จำเป็นให้กับเรา โดยเฉพาะเครื่องมือ Express ซึ่งเป็น module สำคัญ ช่วยลดแรงไปได้เยอะ
npm install --save express express-session body-pa
เสร็จแล้ว ก็เริ่ม สร้าง ไฟล์เริมต้น ตาม คห 2 ได้เลย ให้ชื่อว่า index.js นะครับ
อย่าลืม เปิด port 443 ด้วยนะครับ
firewall-cmd --add-port=443/tcp --zone=public --permanent
firewall-cmd --reload

เสร็จแล้ว ก็สั่ง run
ืnode index.js
ตอนนี้เราก็เปิด https://chaidhanan.thddns.net ได้แล้ว

เดี๋ยวว่างจะมาอธิบาย โค๊ดต่อ ทำงานก่อนล่ะครับ


ประวัติการแก้ไข
2020-08-03 15:17:58
2020-08-03 15:20:51
2020-08-03 15:22:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-08-03 15:17:05 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มือใหม่หัดเขียน NodeJs ผลัดมาตั้งนาน กว่าจะได้โอกาส
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่