서로 에코만 하는게 부족하다면 유닉스의 wall 채팅을 구현해보자. 사실 이것만 되면 누가 접속했는지도 알고 누가 누구한테 무얼 보낼 수 있는지도 아는 셈이므로 채팅방을 하든지 온라인대전 격투게임 서버를 만들던지 바카라(어이쿠 위험한 단어) 서버를 만들던지 엠엠오알피지 서버를 만들던지 알아서 주무르면 된다. 자 그럼 이 대단한 서버의 코드를 보자 var clients = []; require('net').createServer(function(socket) { socket.on("connect", function() { clients.push(socket); }); socket.on("close", function() { clients.splice(clients.indexOf(socket), 1); }); socket.on("data", function(data) { var sender = this; clients.forEach(function(client) { if (client !== sender) client.write(data); }); }); }).listen(1337,"0.0.0.0"); 네트워크 프로그래밍 좀 해본 사람이라면 다리에 힘이 턱 풀릴 정도로 허무한 코드라고 할 수 있겠다. 코드를 위에서부터 말로 쭉 설명하자면 1. 빈 접속자 배열을 만든다. 2. connect 할때마다 접속자 배열에 해당 소켓을 추가한다. 3. close 하면 socket 의 위치를 찾아(indexOf) 해서 떼어낸다(splice) 4. data 즉 접속자로 부터 입력을 받으면 자기 자신이 아닌 다른 모든 소켓에게 쓰기를 한다. 5. 이 모든 것을 1337번 포트에 연...
Meteor evangelist, IoT, Renoise, Lua, Javascript, Coffeescript