>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 |