使用socket实现简单的统计站点人数

使用socket实现简单的统计站点人数

服务器端:

1)使用一个javascript变量来统计
2)使用广播,给所有已经连接的客户端发送人数
3)给刚刚连接上的客户端响应人数

代码如下:
var http=require('http');
var fs=require('fs');
var counter=0;

var server=http.createServer(function(req,res){
      fs.readFile('./index.html',function(error,data){
      res.writeHead(200,{'Content-Type':'text-html'});
      res.end(data,'utf-8');
 });
var io=require('socket.io').listen('server');
io.sockets.on('connection',function(socket){
    count++;
    console.log("user connected"+count+"user(s) present.");
    socket.emit('users',{number:counter});
    socket.broadcast.emit('users':{number:counter});
    socket.on('disconnect',function(){
    counter--;
    console.log("user disconnected"+counter+"user(s)present.");
    socket.broadcast.emit('user',{number:counter});
  });
});

}).listen(3000,"127.0.0.1");
console.log('server running at http://127.0.0.1:3000/');


客户端:
<!doctype html>
<html lang="en">
  <head>
     <meta charset="utf-8"/>
     <title>socket.io example</title>
  </head>
  <body>
     <h1>socket.io  example</h1>
     <h2>how many users are here?</h2>
     <p id="count"></p>
     <script src="/socket.io/socket.io.js"></script>
     <script>
       var socket=io.connect('http://127.0.0.1:3000');
       var count=document.getElementById('count');
       socket.on('users',function(data){
       console.log("got update from the server");
       console.log("there are "+data.number+"users");
       count.innerHTML=data.number
   });
     </script>
  </body>

</html>


package.jade中添加如下依赖:
{
  "name":"socketio_example",
  "version":"0.0.1",
  "private":"true",
  "dependencies":{
      "socket.io":"0.8.7"
   }
  }

测试结果如下:
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>d:

D:\>cd nodejs

D:\nodejs>cd socketTest

D:\nodejs\socketTest>npm install

D:\nodejs\socketTest>node app.js
Server running at http://127.0.0.1:3000/
   info  - socket.io started
   debug - served static content /socket.io.js
   debug - client authorized
   info  - handshake authorized 8548401971022221
   debug - setting request GET /socket.io/1/websocket/8548401971022221
   debug - set heartbeat interval for client 8548401971022221
   debug - client authorized for
   debug - websocket writing 1::
User connected. 1 user(s) present.
   debug - websocket writing 5:::{"name":"users","args":[{"number":1}]}
   debug - broadcasting packet
   debug - served static content /socket.io.js
   debug - client authorized
   info  - handshake authorized 1192568801500835729
   debug - setting request GET /socket.io/1/websocket/1192568801500835729
   debug - set heartbeat interval for client 1192568801500835729
   debug - client authorized for
   debug - websocket writing 1::
User connected. 2 user(s) present.
   debug - websocket writing 5:::{"name":"users","args":[{"number":2}]}
   debug - broadcasting packet
   debug - websocket writing 5:::{"name":"users","args":[{"number":2}]}
   debug - emitting heartbeat for client 8548401971022221
   debug - websocket writing 2::
   debug - set heartbeat timeout for client 8548401971022221
   debug - got heartbeat packet
   debug - cleared heartbeat timeout for client 8548401971022221
   debug - set heartbeat interval for client 8548401971022221
   debug - emitting heartbeat for client 1192568801500835729
   debug - websocket writing 2::
   debug - set heartbeat timeout for client 1192568801500835729
   debug - got heartbeat packet
   debug - cleared heartbeat timeout for client 1192568801500835729
   debug - set heartbeat interval for client 1192568801500835729
   info  - transport end
   debug - set close timeout for client 1192568801500835729
   debug - cleared close timeout for client 1192568801500835729
   debug - cleared heartbeat interval for client 1192568801500835729
User disconnected. 1 user(s) present.
   debug - broadcasting packet
   debug - websocket writing 5:::{"name":"users","args":[{"number":1}]}
   debug - discarding transport
   debug - emitting heartbeat for client 8548401971022221
   debug - websocket writing 2::
   debug - set heartbeat timeout for client 8548401971022221
   debug - got heartbeat packet
   debug - cleared heartbeat timeout for client 8548401971022221

   debug - set heartbeat interval for client 8548401971022221





























































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值