½Ç½Ã°£ ¸ÖƼäÆà ±¸ÇöÇϱâ! - node.js
½Ç½Ã°£ ¸ÖƼäÆà ±¸ÇöÇϱâ!
À¥¿¡¼ ½Ç½Ã°£Ã³¸®
ÇкλýÈ°Áß ½Ç½Ã°£Ã³¸® °ü·ÃÀ¸·Î TCP/IP¸¦ ¹è¿ì¸é¼ TCP/IP¸¦ ÀÌ¿ëÇÑ 1:1 äÆÃÀ» ±¸ÇöÇغ¸¼ÌÀ»°ÍÀ̶ó »ý°¢ÇÕ´Ï´Ù. ÇÏÁö¸¸ ½Ç¹«¿¡¼´Â Àü~~~~Çô ¾µ¸ð°¡ ¾ø´Â °Í °°½À´Ï´Ù;; ¼ö¾÷Áß Ã¥¿¡ ³ª¿ÍÀÖ´Â ¼Ò½º´ë·Î µû¶óÇÑ´Ù¸é 1:1äÆÃÀº Àß µÇÁö¸¸ ¸ÖƼäÆñ¸ÇöÀº ¸Ó¸®¸¦ ±¼¸®°í ±¼·Á¾ß °£½ÅÈ÷ ±¸ÇöÇÒ ¼ö ÀÖÀ» °Ì´Ï´Ù. ±×·¯³ª ¿ª½Ã ½ÇÁ¦¼ºñ½º¿¡ Àû¿ëÀº ¹«¸®¶ó°í »ý°¢µË´Ï´Ù.
±×·³, ½±°Ô ÇÁ·Î±×·¡¹ÖÀ» Â¥¸é¼ ½ÇÁ¦¼ºñ½º¿¡¼ Àû¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¹«¾ùÀÌ ÀÖÀ»±î¿ä?
¸ÖƼäÆðü·ÃÀ¸·Î ¾Ë¾Æº¸¸é¼ ±¦ÂúÀº °ÍÀ» Çϳª ã¾Ò½À´Ï´Ù : )
¿äÁò ÀþÀºÃþ(?)¿¡¼ ¸¹ÀÌ »ç¿ëÇÏ°í ÀÖ´Â node.js + socket.io
ÀÔ´Ï´Ù. ÀÌ°É ¾ð¾î¶ó°í ¼³¸íÀ» ÇؾßÇÒÁö ÇÁ·¹ÀÓ¿öÅ©¶ó°í ¼³¸íÀ» ÇؾßÇÒÁö ¾Ö¸ÅÇÕ´Ï´Ù. node.js
ÀÚü°¡ javascript
¸¦ ±â¹ÝÀ¸·Î ¸¸µé¾îÁø°ÍÀ¸·Î ¾Ë°íÀÖ½À´Ï´Ù.
Wiki(node.jsÀ§Å°¸µÅ©)¸¦ Âü°íÇϸé Node.js´Â È®À强 ÀÖ´Â ³×Æ®¿öÅ© ¾îÇø®ÄÉÀ̼Ç(ƯÈ÷ Server-side) °³¹ß¿¡ »ç¿ëµÇ´Â ¼ÒÇÁÆ®¿þ¾î Ç÷§ÆûÀ̶ó°í Á¤ÀǵǾî ÀÖ½À´Ï´Ù.
À½. Àú´Â ÀÏ´Ü ÇÁ·¹ÀÓ¿öÅ©·Î ±¸ºÐÇÏ°Ú½À´Ï´Ù. ¼¹öÇÁ·Î±×·¥±¸Çö¿¡ ÀÖ¾î¼ javascript
¾ð¾î¸¦ ÀÌ¿ëÇÏ¸é¼ Æ¯ÈµÇ¾ú´Ù°í »ý°¢ÇÏ½Ã¸é µÉ °Í °°½À´Ï´Ù.
Àú´Â javascript
¾ð¾î°¡ ±×·¸°Ô Àͼ÷Ä¡¾Ê¾Æ¼ °¡²û¾¿ ¹®¹ýÀ» È®ÀÎÇÏ¸é¼ ÀÛ¼ºÇϴµ¥ ¾ð¾î°¡ Àͼ÷ÇϽŠºÐµéÀº Á¤¸» ½±°Ô ÀÛ¼ºÇÏ¸é¼ ³î·¤ °Í °°³×¿ä. ÈÄÈÄ
node.js + socket.io
node.js + socket.io
? ÀÌ°Ô ¹«¾ùÀÏ°¡¿ä?
ÀÏ´Ü node.js
´Â ¼¹öÇÁ·Î±×·¥À̶ó´Â °ÍÀº ¾Ë°ÚÁö¸¸ socket.io
È®ÀåÀÚºÎÅÍ Âü ÀÌ»óÇÕ´Ï´Ù. °£´ÜÇÏ°Ô ¼³¸íµå¸®¸é ¼ÒÄÏÅë½ÅÀ» ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÖ´Â ¾ÆÀ̶ó°í ¸»¾¸µå¸± ¼ö ÀÖ½À´Ï´Ù.
node.js
¿Í socket.io
°¡ ¸¸³ª¸é ¾Æ±î À§¿¡¼ Èûµé°Ô ±¸ÇöÇÏ´ø ¸ÖƼäÆÃÀ» ¼ø½Ä°£¿¡ ª°í ±½°Ô ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù!
¼º´ÉÀÌ Àǽɽº·¯¿ì½Å°¡¿ä? Àú´Â Å×½ºÆ®Çغ¸Áö ¾Ê¾ÒÁö¸¸ ´Ù¸¥ºÐµé²²¼ Å×½ºÆ®ÇÑ ³»¿ëµéÀ» º¸°ÔµÇ¸é ½Ç.½Ã.°£ Á¢¼Ó ¸îõ¸í±îÁö´Â ¹«¸®¾øÀÌ Ã³¸®ÇØÁشٰí ÇÕ´Ï´Ù! ¾öûū ¼ºñ½º¸¦ ÇÏÁö¾Ê´Â´Ù¸é ¸îõ¸íÀÌ Á¤È®ÇÏ°Ô µ¿½Ã¿¡ Á¢¼ÓÇÒÀÏÀÌ ¸¹À»±î¿ä? Á¦ °³ÀÎÀûÀ¸·Î´Â ±×·±°ÆÁ¤À» ÇÏ°íÀÖ´Ù¸é, ±× ¼ºñ½º´Â ÀÌ¹Ì ¼º°øÇ߱⠶§¹®¿¡ ´É·ÂÀÖ´Â °³¹ßÀÚ¸¦ ÀÚ½ÅÀÖ°Ô ¿µÀÔÇÏ¸é µË´Ï´Ù :D ÇÏÇÏÇÏÇÏÇÏÇÏ
ÀÌ·¸°Ô ¸»¸¸ ÁÖÀú¸®ÁÖÀú¸®ÇغÃÀÚ ¸Ó¸®¸¸ ´õ º¹ÀâÇØÁú °Í °°³×¿ä. Á÷Á¢ ½Ç½ÀÀ» ÅëÇؼ ¾ó¸¶³ª À§´ëÇÑÁö °°ÀÌ È®ÀÎÇصµ·Ï Çսô٠: )
äÆà Server
node.js
- node.js ¸µÅ©
socket.io
- Socket.IO ¸µÅ©
º»°ÝÀûÀÎ Àû¿ëÀ» À§ÇØ À§¿¡ ÀÖ´Â µÎ À¥»çÀÌÆ®¸¦ µé¾î°¡¼ ¼³Ä¡¸¦ ÇØÁÖ¼¼¿ä. node.js
¸¦ ¼³Ä¡ÇϽŠµÚ socket.io
¸¦ ÁغñÇØÁÖ½Ã¸é µË´Ï´Ù : )
±âº»ÀûÀÎ SOCKETÅë½ÅÀ» È°¿ëÇÏ´Â ¹æ¹ýÀÌ socket.io
À¥»çÀÌÆ®¿¡ ¼³¸íµÇ¾î Àֳ׿ä.
/* Server Source */
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
/* Client Source */
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
ÀÌ·¸°Ô ¼¹öÂÊ°ú Ŭ¶óÀ̾ðÆ®¿¡ À§ ¿¹Á¦¼Ò½º¸¦ Àû¿ëÇÏ½Ã¸é ½Ç½Ã°£À¸·Î Åë½ÅÇÒ ¼ö ÀÖ´Â ÆäÀÌÁö°¡ ¿Ï¼ºµË´Ï´Ù : ) ÇÏÁö¸¸ ¡°À§¿¡ ÀÖ´Â ¼Ò½º°¡Áö°í äÆÃÀ» ¾î¶»°Ô ¸¸µé¾î?¡± ÇϽô ºÐÀÌ ÀÖÀ»Áöµµ ¸ð¸£°Ú½À´Ï´Ù.
/* ½ÇÁ¦ Àû¿ëÇÑ Server Source */
var io = require('socket.io').listen(50000);
io.sockets.on('connection', function(socket) {
socket.emit('connection', {
type : 'connected'
});
socket.on('connection', function(data) {
if(data.type == 'join') {
socket.join(data.room);
socket.set('room', data.room);
socket.emit('system', {
message : 'äÆù濡 ¿À½Å °ÍÀ» ȯ¿µÇÕ´Ï´Ù.'
});
socket.broadcast.to(data.room).emit('system', {
message : data.name + '´ÔÀÌ Á¢¼ÓÇϼ̽À´Ï´Ù.'
});
}
});
socket.on('user', function(data) {
socket.get('room', function(error, room) {
socket.broadcast.to(room).emit('message', data);
});
});
});
À§¿¡´Â Á¦°¡ ÀÌ°ÍÀú°Í ¼öÁýÇÏ¸é¼ Á¦´ë·Î ÀÛµ¿Çϵµ·Ï ¸¸µé¾îº» ¼¹ö¼Ò½ºÀÔ´Ï´Ù : )
°¢ »ç¿ëÀÚµéÀÌ ¿øÇϴ äÆù濡 Á¢¼ÓÇÏ¿© ¼·Î ½Ç½Ã°£À¸·Î äÆÃÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇØÁÖ´Â ¼¹öÀÔ´Ï´Ù.
socket.io
¿¡ ÀÇÇؼ »ç¿ëÀÚ°¡ ÇØ´ç¹æ¿¡ Á¢¼ÓÇÏ¿© ±ÛÀÛ¼º½Ã ¼¹ö´Â °°Àº¹æ¿¡ Àִ ŸÁ¢¼ÓÀÚ¿¡°Ô ÇØ´ç¸Þ¼¼Áö¸¦ ºê·Îµåij½ºÆ®ÇØÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.
¸¸¾à ´ëÈÇÑ ³»¿ëµéÀ» ÀúÀåÇÏ°í ½Í´Ù¸é µ¥ÀÌÅÍ°¡ ³Ñ¾î¿À´Â ½ÃÁ¡¿¡¼ ¿øÇÏ´Â DB
¿¡ Connection
ÇÏ¿© ±â·ÏÇÏ¸é µË´Ï´Ù : ) Àú´Â ¿©±â¼ ¿äÁò À¯ÇàÇÑ´Ù´Â MongoDB(¸ù°íDB)
¸¦ ÀÌ¿ëÇغ¸¾Ò°í, ½ÇÇè°á°ú! ¸¸Á·½º·¯¿ü½À´Ï´Ù.
±×·³ ´ÙÀ½Àº Client
¿¡¼´Â ¾î¶»°Ô °°Àº ¹æ¿¡ Á¢¼ÓÇϸç, ¸Þ¼¼Áö¸¦ ÁÖ°í¹ÞÀ» ¼ö ÀÖ´ÂÁö »ìÆ캸µµ·Ï ÇÏ°Ú½À´Ï´Ù!
äÆà Client
¹Ù·Î À§¿¡¼ ¾ÆÁÖ¾ÆÁÖ¾ÆÁÖ °£´ÜÇÏ°Ô Client¼Ò½º¸¦ º¸¼ÌÁö¸¸, °¨ÀÌ Àß ¾È¿À½Ç °Í °°³×¿ä. ±×·¡¼ ³ª¸§ »ùÇüҽº¸¦ ÁغñÇغ¸¾Ò½À´Ï´Ù. ¾ÆÁÖ ±âº»ÀûÀ¸·Î ´ëÈÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾îº¸¾Ò½À´Ï´Ù : )
Âü°íÇϼż Ŭ¶óÀ̾ðÆ®¿Í ¼¹ö ¸ðµÎ Á÷Á¢ ±¸ÇöÇغ¸¾Æ¿ä : )
<!DOCTYPE html>
<html>
<head>
<style>
.footer {
width: 100%;
height: 50px;
position: fixed;
bottom: 0;
}
</style>
</head>
<body>
<div class='j-message'>
</div>
<div class='j-footer'>
<table>
<tr>
<td width='100%'>
<input id='message-input' type='text'>
</td>
<td width='20%'>
<button id='message-button' type='submit'> Àü¼Û </button>
</td>
</tr>
</table>
</div>
<script type="text/javascript" src="http://chat.socket.io/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script>
var serverURL = 'localhost:50000';
var name = 'jin';
var room = '100';
$(document).ready(function() {
var socket = io.connect(serverURL);
socket.on('connection', function(data) {
if(data.type == 'connected') {
socket.emit('connection', {
type : 'join',
name : name,
room : 100
});
}
});
socket.on('system', function(data) {
writeMessage('system', 'system', data.message);
});
socket.on('message', function(data) {
writeMessage('other', data.name, data.message);
});
$('#message-button').click(function() {
var msg = $('#message-input').val();
socket.emit('user', {
name : name,
message : msg
});
writeMessage('me', name, msg);
});
function writeMessage(type, name, message) {
var html = '<div>{MESSAGE}</div>';
var printName = '';
if(type == 'me') {
printName = name + ' : ';
}
html = html.replace('{MESSAGE}', printName + message);
$(html).appendTo('.j-message');
}
});
</script>
</body>
</html>
À½¡¦ Á¹¸é¼ Ŭ¶óÀ̾ðÆ® ¼Ò½º¸¦ ÀÛ¼ºÇϱâ´Â Çߴµ¥, Àß µ¹¾Æ°¡´ÂÁö Å×½ºÆ®´Â ¸øÇØºÃ³×¿ä ¤Ð¤Ð Âü°íÇÏ½Ã¸é¼ ÀÛ¼ºÇϽøé Àߵɰ̴ϴ٠: )
¸ÖƼäÆÃ. ¾î·Á¿ï °Í °°¾ÒÁö¸¸ ÀúÈñ´Â ³Ê¹«³ªµµ ÁÁÀº ¼¼»ó¿¡ »ì°í ÀÖ½À´Ï´Ù.
´ëºÎºÐ ¶óÀ̺귯¸®, ÇÁ·¹ÀÓ¿öÅ© ÇüÅ·Π±¸ÇöµÇ¾î ÀÖ°í, Àß °¡Á®´Ù°¡ »ç¿ëÇÏ¸é µË´Ï´Ù. °ú°Å¿´´Ù¸é À¸~~~ »ý°¢¸¸Çصµ ²ûÂïÇÕ´Ï´Ù.
ÇÏÁö¸¸ ÀúÈñ´Â ÀÌ·¸°Ô Æí¸®ÇÏ°Ô ±¸ÇöµÇ¾îÀÖ´Â °ÍµéÀ» °¡Áö°í ¾öû³°ÍÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù.