중간점검 완성된 소스
////////////////////////////// 시간
require('date-utils');
////////////////////////////// 소켓호출
var io = require('socket.io').listen(3303);
console.log('socket server run!');
io.sockets.on('connection', function(socket){
var newDate = new Date();
var time = newDate.toFormat('YYYY-MM-DD HH24:MI:SS');
console.log('connection => ' + time); //최초접속시 한번
//메세지 수신시
socket.on('send', function(res){
console.log(res);
//socket.emit('recv', data); //메세지를 발송한 본인에게만
io.emit('recv', res); //전체 커넥션 유저들에게
});
//브라우저를 떠날때 실행됨
socket.on('disconnect', () => {
var newDate = new Date();
var time = newDate.toFormat('YYYY-MM-DD HH24:MI:SS');
console.log('disconnected => ' + time);
});
});
생각했던 것보다 훨씬 간단하다.
솔직히 이렇게 쉽게 구현이 될줄은 몰랐다...
거기다가 문법 기본베이스가 자바스크립트이다보니 딱히 어려울것도 없었다.
소켓서버 소스코드는 위 소스코드가 전부이다...
클라이언트 소스와, 메세지를 저장할 뺵엔드 소스는 딱히 공개할 필요가 없을것 같아 패스하겠다...
노드서버의 MySQL에 메세지를 저장하려다가,
클라이언트 쪽에서 넘어오는 메세지 발송 아이디의 노출과 변조 염려가 있어서, 그냥 웹서버DB에서 저장을 구현했다.
사실 이렇게 해도, 메세지 발생시에만 해당 메세지 1건의 http 호출이 일어나기 때문에, 이전의 폴링방식의 채팅과는 상대도 안되는 효율성을 보인다.
이모티콘 기능도 곧 넣을예정~