node.js--socket.io

昨天写了个websocket+node.js的小聊天工具,写好后发现socket.io可以方便实现,又不用担心浏览器兼容问题。

对于socket.io的原理有兴趣的可以了解下,http://book.mixu.net/ch13.html 这篇文章接受socket.io入门。

socket.io的configure可以看这里:https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

index.html:

<!DOCTYPE HTML>
<html>
<head>
    <style type="text/css">
        #message { padding:0px; list-style-type:none;}
        #message li { padding:2px 0px;border-bottom:1px solid #ccc; }
    </style>
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
  <script src="/socket.io/socket.io.js"></script>
  <script>
      $(function(){
            var socket = io.connect(); 
            socket.on('connect',function(){
                socket.on('message',function(message){
                    $('#message').append($('<li></li>')).text(message);
                }); 
                socket.on('disconnect',function(){
                    $('#message').append('<li>Disconnect</li>'); 
                })
            }); 

            var el = $('#chatmsg');
            $('#chatmsg').keypress(function(e){
                if(e.which == 13){
                    console.log('keypress');
                    e.preventDefault();
                    socket.send(el.val());
                    $('#message').append($('<li></li>')).text(el.val());
                    el.val('');
                } 
            });
      }); 
  </script>
</head>
<body>
    <ul id="message"></ul>
    <hr>
    <input type="text" id="chatmsg">
</body>
</html>


server.js

var fs = require('fs'),
    http = require('http'),
    sio = require('socket.io');


var server = http.createServer(function(req,res){
    res.writeHead(200,{'Content-type':'text/html'}); 
    res.end(fs.readFileSync('./index.html')); 
});
server.listen(8000,function(){
    console.log('server listening at http://localhost:8000');
});


io = sio.listen(server);
var message = [];


io.sockets.on('connection',function(socket){
    socket.on('message',function(msg){
        console.log('receive:',msg); 
        message.push(msg);
        socket.broadcast.emit('message',msg);
    });
    //send message to new clients
    message.forEach(function(msg){
        socket.send(msg);
    })
});


你可能感兴趣的:(node.js)