node.js session

1. 세션을 사용해보자

HTTP 프로토콜 특징

  1. Connecionless
  2. Stateless

비연결성, 상태값을 가지지 않는다

동작형태 -> 클라이언트/서버( 요청과 응답 <-포인트)
비연결성(상태 노유지 프로토콜)-> 소왓? -> 무작위를 상대로하는 서비스로는 최적
이지
메시지 교환형태 프로토콜이야(클라이언트와 서버간의 http메세지 주고받으며 통신
)

stateless라며? -> 쿠키 등장!

쿠키와 세션

-> Http의 약점 보완

  • 쿠키(클라이언트 로컬에 저장되는 키와 값) - 클라이언트 파일로 저장
  • 세션(서버에서 일정 시간동안 저장되는 키와 값) - 서버에 저장

세션은 서버의 자원을 사용하기 때문에 마구잡이로 사용하다보면 서버 메모리가 감
당할수 없게 되고 그로 인해 서비스 장애 또는 서비스가 느려 질수 있다. 그래서 >쿠기를 사용해야 한당.

[관련내용]

  1. 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!');
});

위와같이 작성후

  1. localhost:3005/cnt
  • session hello 확인
  1. localhost:3005/check
  • rst : 1 확인

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!');
});
  1. 위와 같이 작성하여 실행
  2. localhost:3005/cnt 새로고침
  3. cnt 증가
  4. localhost:3005/check 세션에 cnt 잘담겨져있는지 확인