用express+socket.io创建一个多人聊天室~~~
嘿嘿,之前给大家写过一个用http+websocket来创建一个多人聊天室,虽然界面是那么的简陋enn~~,但是小猪还是想给大家带来一个新版本的多人聊天室,express和socket.io就是今天的主角。今天给大家介绍express和socket.io来实现多人聊天室,是因为个人认为express和socket.io这两个联合起来是真的很强大!!!
如果大家对express和socket.io的相关知识不了解的话,请上他们相应的官网查阅Express 4.x - API 参考 (expressjs.com) Socket.IO 中文文档 (bootcss.com) 或者上npm官网,搜索express 和 socket.io
好了,不多说了,开始进入主题!!
(本次demo需要下载依赖 express、socket.io、jquery)
npm i express socket.io jquery --save-dev
后端代码:
//1、引入express,创建路由app
var express = require('express');
var app = express();
//2、创建http服务器
var server = require('http').createServer(app);
//3、监听端口3000,如果被占用可以选择其他的端口
server.listen(3000,function(){
console.log("3000端口已经被启动.....");
})
//4、当HTML中引入css文件时,根据所提供的路径是找不到,因此需要添加静态文件中间件
app.use(express.static(__dirname+'/static'));//我这里是用静态的数据比如css文件,存放在static文件里的
//5、通过app路由获取页面数据
app.get('*',function(request,response,next){
response.sendFile(__dirname+'/view/1.html');
//注意这里的__dirname表示当前文件根路径
})
//6、创建socket服务器 io
var io = require('socket.io')(server);
var count=0;//统计正在连接的客户端人数
//7、监听客户端连接,
io.on('connection',function(socket){
//sokcet表示当前连接成功的客户端
//监听客户端登录成
socket.on('login',function(res){
//记录当前用户的匿名
socket.username = res;
console.log('名字:',socket.username)
//进入连接count++
count++;
//向所有客户端推送当前连接人数
io.emit('count',count)
console.log(count);
//服务器向当前客户端推送消息,连接成功,
socket.emit('msg',{
name:socket.username,msg:'连接成功'+(new Date())});
})
//监听客户端的发送的消息
socket.on('send',function(