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 캔버스에서 멀티플레이 가능한 로그라이크를 만들 수 있을까? ㅎㅎ
정도 되겠다. 한마디로 꽤 재미있는 장난감이 될 것 같다.
Source: http://boxcatstudio.wordpress.com/2010/11/09/setup-npm-socketio/
Category:regular
Tags:node.jssocket.io
Category:regular
Tags:node.jssocket.io