node.js session
1. 세션을 사용해보자
HTTP 프로토콜 특징
- Connecionless
- Stateless
비연결성, 상태값을 가지지 않는다
동작형태 -> 클라이언트/서버( 요청과 응답 <-포인트)
비연결성(상태 노유지 프로토콜)-> 소왓? -> 무작위를 상대로하는 서비스로는 최적
이지
메시지 교환형태 프로토콜이야(클라이언트와 서버간의 http메세지 주고받으며 통신
)
stateless라며? -> 쿠키 등장!
쿠키와 세션
-> Http의 약점 보완
- 쿠키(클라이언트 로컬에 저장되는 키와 값) - 클라이언트 파일로 저장
- 세션(서버에서 일정 시간동안 저장되는 키와 값) - 서버에 저장
세션은 서버의 자원을 사용하기 때문에 마구잡이로 사용하다보면 서버 메모리가 감
당할수 없게 되고 그로 인해 서비스 장애 또는 서비스가 느려 질수 있다. 그래서 >쿠기를 사용해야 한당.
[관련내용]
- https://www.npmjs.com/package/express-session
1
| npm install express-session --save
|
package.json확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| var express = require('express'); var session = require('express-session'); var app = express();
app.use(session({ secret: 'supserljksdg#23423', resave: false, saveUninitialized: true, // 세션아이디 발급전에 발급 x }));
app.get('/cnt', function(req,res){ req.session.cnt= 1; res.send('Sesson hello'); });
app.get('/check', function(req,res){ res.send('rst : ' + parseInt(req.session.cnt)); });
app.listen(3005, function () { console.log('app listening on port 3005!'); });
|
위와같이 작성후
- localhost:3005/cnt
- localhost:3005/check
2. session cnt 올려보기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| var express = require('express'); var session = require('express-session'); var app = express();
app.use(session({ secret: 'supserljksdg#23423', resave: false, saveUninitialized: true, // 세션아이디 발급전에 발급 x }));
app.get('/cnt', function(req,res){ if(req.session.cnt){ req.session.cnt++; }else{ req.session.cnt = 1; } res.send('cnt :' + req.session.cnt); });
app.get('/check', function(req,res){ res.send('rst : ' + parseInt(req.session.cnt)); });
app.listen(3005, function () { console.log('app listening on port 3005!'); });
|
- 위와 같이 작성하여 실행
- localhost:3005/cnt 새로고침
- cnt 증가
- localhost:3005/check 세션에 cnt 잘담겨져있는지 확인