express_socket 聊天室
app.js
var express=require('express'); var app=express(); var DB=require('./module/db.js'); app.set('view engine','ejs'); app.use(express.static('public')); //express里面使用socket.io var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(8000); app.get('/',function(req,res){ //res.send('首页'); res.render('index'); }) app.get('/chat',function(req,res){ //res.send('首页'); var name=req.query.name; res.render('chat',{ name:name }); }) //写socket.io 服务端 io.on('connection',function(socket){ console.log('有个客户端连接了'); socket.on('message',function(data){ io.emit('message',data); /*全部广播*/ }) })
index.ejs
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<style>
html {
height: 100%;
background: url("banner-bg_2x.jpg") no-repeat center center / 100% auto #1B1C3B;
}
.box{
width: 400px;
height: 60px;
display: flex;
margin:200px auto;
}
.box input[type='text']{
flex: 1;
height: 60px;
border: 1px solid #eee;
}
.box button{
width: 100px;
height: 64px;
background: orange;
color: #fff;
border:none;
cursor: pointer;
}
</style>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(function(){
$('.login').click(function(){
var name=$('#name').val();
if(name){
location.href='/chat?name='+name;
}else{
alert('您的大名不对');
}
})
})
</script>
</head>
<body>
<div class="box">
<input type="text" placeholder="请输入您的大名" id="name"/> <button class="login">进入聊天室</button>
</div>
</body>
</html>
chat.js
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<style>
.inner{
max-width: 640px;
margin: 0 auto;
}
h2 {
text-align: center;
background: #eee;
color: red;
height: 50px;
line-height: 50px;
}
.chat{
padding:20px;
border: 1px solid #f60;
height: 500px;
}
.send{
width: 100%;
bottom:5px;
height: 44px;
line-height: 44px;
display: flex;
overflow-x: hidden;
}
.send input[type='text']{
flex: 1;
}
.send input[type='button']{
width: 100px;
}
</style>
<script src="/socket.io/socket.io.js"></script>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(function(){
var socket=io.connect('http://localhost:8000');
socket.on('message',function(data){ /*监听服务器广播的数据*/
$(".list").append(`<li><strong>${data.name}:</strong> ${data.msg}</li>`);
$('#msg').val('');
$('.footer').get(0).scrollIntoView(true);
})
//发送数据
$('#send').click(function(){
socket.emit('message',{
msg:$('#msg').val(),
name:'<%=name%>'
})
})
})
</script>
</head>
<body>
<div class="inner">
<h2>小小聊天室</h2>
<div class="chat" style="overflow-x: auto">
<ul class="list">
</ul>
<p class="footer"> </p>
</div>
<div class="send">
<input type="text" id="msg"/>
<input type="button" id="send" value="发送"/>
</div>
</div>
</body>
</html>
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!
浙公网安备 33010602011771号