創建一個socket服務實時統計在線人數


主要是兩個文件,一個是后端文件,一個是前端文件:
后端文件:有人登錄了,就通知所有的正在訪問的頁面,把總人數+1;反之-1;
前端文件:有人登錄了,通知后端,頁面關閉了,通知后端,同時接收后端派發來的消息;

首先,我們來寫后端文件-app.js:

var express = require('express');
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
app.use('/', express.static(__dirname+'/'));
var users = [];
console.log('服務器運行於:localhost:3004');
io.on('connection', function(socket){
     console.log('a user connected');

    
	socket.on('login',function(data){
		
		  socket.username = data.username;
		  users.push(data.username);
		  // 統計連接數
		  socket.emit('users',{number:users.length});  // 發送給自己
		  socket.broadcast.emit('users',{number:users.length}); // 發送給其他人
		

	});
	socket.on('logout',function(data){
		
		  socket.username = data.username;
		  users=users.slice(0,users.length-1);
		  console.log()
		   統計連接數
		  socket.emit('users',{number:users.length});  // 發送給自己
		  socket.broadcast.emit('users',{number:users.length}); // 發送給其他人
		

	});
});
//開啟端口監聽socket
server.listen(3004);

然后,前端html:

   <!DOCTYPE html>
  <html>
  <head>
    <meta charset="utf-8" />
    <title>Socket.IO Example</title>
  </head>
  <body>
    <h1>Socket.IO及時通訊</h1>
    <p id="count"></p>
	
	<span class="logoutBtn">退出</sapn>
   
       <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
      <script src="https://cdn.bootcss.com/socket.io/2.2.0/socket.io.js"></script>
    <script>
      
    //建立連接
    socket = io.connect('http://你的服務器地址:3004');
     
	socket.emit("login", {username:'defaultName'}); 
	
	//接收服務端推送的信息
    socket.on("users", function(obj) {
        //var curContent = contentNode.html();
        //contentNode.html(curContent+obj.msg);
		console.log('當前在線:'+obj.number)
    });
	
	
	$('.logoutBtn').click(function(){
	    socket.emit("logout", {username:'defaultName'});
	});
	
	
    </script>

  </body>
</html>

后端文件寫好后,要發布到我們自己的服務器上運行才會生效,

后端文件要用到express和socket.io,所以我再創建一個package.json文件:

{
  "name": "socketServer",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "express": "~4.16.0"
  },
  "devDependencies": {
    "socket.io": "^2.2.0"
  }
}

如圖,app.js和package.json在一個叫socketServer文件夾中,通過ftp傳到服務器:

在服務器命令行進入socketServer目錄下,運行npm install命令,安裝好依賴,安裝好后就多了一個node_modules文件:

最后,我們運行我們的app.js:
一般我們都是通過npm start啟動應用,其實就是調用node ./var/www/socketServer。
換成pm2就是:pm2 start ./var/www/socketServer

如果一切順利的話,我們的在線人數統計就完成了。

如果你有使用pm2的話,使用:pm2 logs命令就可以在控制台上查看打印信息了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM