>npm install connect
>npm install connect_router
>npm install socket.io
1. app.js
/* 폴더구조 1. html - html 페이지 2. node_modules - nodejs 모듈 3. Resource - js, css, images 등의 리소스 파일 */ // http 서비스를 하기 위해 var connect = require("connect"), connect_router = require("connect_router"), fs = require("fs"), url = require("url"); //서버 객체를 얻어옵니다. var server = connect.createServer() .use(connect.static(__dirname + "/Resource")) // 각종 리소스 폴더 .use(connect.bodyParser()) // post 방식 전송된 데이터 읽어오기 위해 .use(connect_router(main)) // 페이지 라우팅 처리할 함수 .use(connect.errorHandler({stack:true, message:true, dump:true})) // 에러출력 및 처리 .listen(3000); //페이지 라우팅을 해서 클라이언트에 서비스할 함수 function main(app){ app.get("/", function(request, response){ console.log("index.html 클라이언트의 요청이 왔습니다."); //클라이언트에 응답할 html 파일을 읽어서 응답한다. fs.readFile("html/index.html", function(error, data){ response.writeHead(200, {"Content-Type":"text/html"}); response.end(data); }); }); } /* * 클라이언트와 웹소켓 연결을 하기 위한 작업 */ //필요한 모듈을 얻어온다. var socketio = require("socket.io"); // 클라이언트와 소켓 통신을 하기 위한 io 객체를 얻어온다. var io = socketio.listen(server); //불필요한 로그는 제거 하기 위해 io.set("log level", 2); // 클라이언트가 소켓 서버 접속을 하면 'connection' 이벤트가 발생한다. io.sockets.on('connection', function(socket){ /* * 클라이언트의 이벤트에 귀를 귀울이거나, 혹은 이벤트를 발생시키면 된다. * * 3가지 통신 방법 * 1. public => io.sockets.emit("이벤트명", data); * 2. broadcast => io.broadcast.emit("이벤트명", data); * 3. private => io.sockets.sockets[id].emit("이벤트명", data); */ console.log("connection"); socket.on('name', name); //when the user disconnects.. perform this socket.on('disconnect', function(){ console.log('disconect'); }); function name($data){ socket.emit('name', $data); } });
2. /html/index.html
<!DOCTYPE HTML> <html> <head> <title> socket.io </title> <script src="/socket.io/socket.io.js"></script> <script src="/js/jquery-1.8.0.min.js"></script> <script> $(document).ready(function(){ var socket = io.connect('http://127.0.0.1:3000'); // on connection to server, ask for user's name with an anonymous callback socket.on('connect', function(){ }); // addEventListener(event, callback) socket.on('name', name); $('#btn_send').click(function(){ var inputValue = $('#input_text').val(); socket.emit('name', inputValue); }); function name($data){ $("#result_text").html($data); } }); </script> </head> <body> <input id="input_text" style="width:100px;" /> <input id="btn_send" type="button" value="send" /> <div id="result_text">result</div> </body> </html>
'프로그래밍 > nodeJS' 카테고리의 다른 글
[Node.js] net 모듈 + flash 소켓통신 (0) | 2015.01.27 |
---|---|
[nodeJS] Socket.IO 방만들기 (0) | 2015.01.27 |
[nodeJS] Express / Routes / Jade 모듈 (0) | 2015.01.27 |
[nodeJS] connect / connect_router 모듈 (0) | 2015.01.27 |
[nodeJS] jade 모듈 (0) | 2015.01.27 |