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); // 룸에서 본인을 제외한 방이 존재하는 사람들에게 전송
});
});
// 소켓 구문 종료 =================================================