2010-11-09

Setup npm & socket.io

EDIT: npm 은 이제 기본적으로 설치가 되므로 설치 방법은 생략한다.

npm install express 
npm install socket.io

참고로, 모든 npm 소스는 ~/.node_libraries/.npm 아래에 저장되어 있다.

가장 간단한 express 서버는 다음과 같다. curl 로 로컬 서버에 접속해볼 수 있지만, 먼저 테스트를 위해서 아마존 EC2 콘솔에 접속해서 방화벽의 8080 포트를 열어둬야 한다.

var app = require('express').createServer();
app.get('/', function(req, res){
  res.send('hello world');
});
app.listen(8080);

가장 간단한 socket.io 서버와 클라이언트는 github 에 존재한다. (이상하게도 제대로된 매뉴얼을 찾기가 힘드니, 그냥 샘플 코드를 보기를 권한다) 

git clone git://github.com/LearnBoost/Socket.IO-node.git socket.io
cd socket.io/example/
sudo node server.js

서버와 클라이언트간의 통신은 순전히 JSON 으로 구현된다. 보내는 쪽에서

socket.send({ id:chat, type:whisper, target:reiot, message:Hello World! })

라고 보내고, 받는 쪽에서는

socket.on('message',function(data){
  if('id' in data){
  if(data.id=='chat'){
  show_message(data.message);
  }
  }
});

이런 식의 전통적인 소켓 프로그래밍이 이루어진다. 브로드캐스팅은 그냥 소켓에 대고

socket.broadcast({something:special})

이라고 하면 끝. 

첫 소감은 

  • 아 쉽다. 처음 소켓 프로그래밍을 배울 때의 느낌이야. 왜 지금까지 이런게 안되었을까..
  • 소스가 노출될테니 게임 서버에서 해야 하는 모든 것 - 스니핑, 스피드핵, 프로토콜 해킹, 암호화, 한방핵 - 등을 다 구현해야겠지. 클라이언트에게 많은 권한을 줘서는 안될 것 같아..
  • 이걸로 HTML5 캔버스에서 멀티플레이 가능한 로그라이크를 만들 수 있을까? ㅎㅎ

정도 되겠다. 한마디로 꽤 재미있는 장난감이 될 것 같다.


comments powered by Disqus