##참고URL
https://www.npmjs.com/package/express-socket.io-session
1. express-socket.io-session 모듈 설치
1
|
npm install express-socket.io-session
|
2. 서버쪽 코드 [app.js]
socket.handshake.session으로 세션데이터로 접근 (38,39번 라인참고)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
var app = express(); // nodejs express의 디폴트 포트번호는 3000번
var http = require('http');
var socketio = require('socket.io');
var server = http.createServer(app);
var io = socketio.listen(server);
server.listen(8080); // 소켓 서버 포트는 8080으로 설정함
// 세션 설정
var session = session({
secret:"asdfasffdas",
resave:false,
saveUninitialized:true
});
app.use(session);
// 소켓 구문 시작 =================================================
var ios = require("express-socket.io-session"); // 소켓 내에서 세션데이터 접근 가능하도록하는 모듈
io.use(ios(session, { autoSave:true })); // 모듈과 세션 연결
io.sockets.on('connection', function(socket){
// 클라이언트에게 메세지 송신 방법
// io.emit == 접속된 모든 클라이언트에게 메세지 전송
// socket.emit == 메세지를 전송한 클라이언트에게만 전송
// io.to(id).emit == 특정 클라이언트에게만 메세지 전송 (본인 포함)
// socket.broadcast.to(id).emit == 본인은 제외한 특정 클라이언트에게만 전송
// socket.emit('message', '서버 데이터 받음');
// socket.on('이벤트명',기능 서술) == 서버 또는 클라이언트에서 메세지를 받는 방식
// room 이름 설정
var room = 'chatting';
// 클라이언트에서 'login'이라는 이벤트명으로 서버로 송신하면 여기로....
// 접속한 클라이언트의 정보가 수신
socket.on('login', function() {
console.log('########클라이언트 로그인########');
var userID = socket.handshake.session.adminID; // <======= 소켓 내에서 세션에 접근
var DEPT_CD = socket.handshake.session.DEPT_CD; // <======= 소켓 내에서 세션에 접근
console.log('session 사원 아이디 : '+ userID + " || " +'session 사원 부서번호 : '+ DEPT_CD);
// room에 join한다
socket.join(room);
console.log("room에 존재하는 사원 수 : "+ io.sockets.adapter.rooms['chatting'].length);
});
// 클라이언트로부터 메세지 수신
socket.on('message', function(message){
var data = JSON.stringify(message);
socket.emit('self', '제품입고관리로 전송완료');
socket.broadcast.to(room).emit('message', data); // 룸에서 본인을 제외한 방이 존재하는 사람들에게 전송
});
});
// 소켓 구문 종료 =================================================
|
'NodeJS' 카테고리의 다른 글
nodejs-mysql transaction 사용하기 (0) | 2020.08.12 |
---|---|
NODEJS + MYSQL pagination (0) | 2020.06.23 |
nodejs express(centos7) 에서 socket.io 모듈 사용하여 다른 클라이언트로 데이터 전달하기 (0) | 2020.03.26 |