socket.io 모듈 사용전에 해당 모듈이 설치되어 있는지 확인해 보고,
설치가 되어 있지 않다면 npm 으로 설치하면 된다.

[web.js]
var app = require('http').createServer(handler).listen(8001)
  , io = require('socket.io').listen(app)
  , fs = require('fs')
  , nicklist = {};

function handler(req, res){
  fs.readFile(__dirname + '/index.html', function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200, { 'Content-Type': 'text/html'});
    res.end(data);
  });
}

io.sockets.on('connection', function (socket) {
  socket.on('join', function(nick){
      nicklist[nick] = socket.nickname = nick;

      socket.broadcast.emit('joinok', nick);
      io.sockets.emit('nicknames', nicklist);
  });

  socket.on('disconnect', function(){
      delete nicklist[socket.nickname];
      socket.broadcast.emit('nicknames',nicklist);
  });
});

[index.html]

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JP Chat</title>
  <script src="http://code.jquery.com/jquery-1.7.min.js"></script>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <form id="set-nickname">

      <label>NickName : </label><input type="text" id="nick" />
      <button id="join">Join</button>
  </form>
  <div id="nicknames"><ul></ul></div>
  <script>
      (function($){
          var socket = io.connect('http://apptest.cafe24app.com');

          socket.on('joinok', function(nick){
              $("ul", "#nicknames").append("<li>"+nick+"</li>");
          });

          socket.on('nicknames', function(data) {
              var nicklist = $("ul", "#nicknames").empty();

              for (var i in data) {
                  $("ul", "#nicknames").append("<li>"+data[i]+"</li>");
              }
          });

          $("#join").on({
              click: function() {
                  var nick = $("#nick");
                  if (nick.val() == "") {
                      alert('NickName 을 입력해주세요.');
                      nick.focus();
                      return false;
                  } else {
                      socket.emit('join', nick.val());
                      nick.val("");
                  }

                  return false;
              }
          });
      })(jQuery);
  </script>
</body>
</html>


참고 URL :http://blog.j2p.kr/blog/2011/11/29/node-chat3/
2012/05/14 14:20 2012/05/14 14:20

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다