npm init
npm i -D ws
node index.js
//引入websocket模块
const WebSocket = require('ws')
//引用server类并实例化,定义服务器的端口
const wss = new WebSocket.Server({port: 5000 })
wss.on('connection',function(ws){
ws.on('message',function(message){
console.log("客户端发送的信息是"+message);
ws.send('hi,我接受到了你的消息我是服务器')
})
})
首先需要
npm init
npm i -D socket.io
npm i express
node app.js
前端引入
.on('connection', function(socket){ }):与客户端建立连接时监听。
.on('disconnect', function(){ }):与客户端断开连接时监听。
.on('event-name', function(data) { }):监听客户端发来的消息。
.broadcast.emit('event-name', { }):向除自己外的所有其他用户广播消息。
.emit('event-name', { }):仅向当前连接的客户端(自己)推送消息。
服务端
io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socket
io.sockets.emit(‘String’,data);//给所有客户端广播消息
io.sockets.socket(socketid).emit(‘String’, data);//给指定的客户端发送消息
socket.on(‘String’,function(data));//监听客户端发送的信息
socket.emit(‘String’, data);//给该socket的客户端发送消息
app.html
Document
聊天室
app.js
const express = require('express')
const http = require('http')
const app = express()
const server = http.createServer(app)
const io = require('socket.io')(server)
var userNum = 0 //当前在线人数
// 开启端口监听socket
server.listen(process.env.PORT || 3000, () => console.log('app listening on port 3000'))
io.on('connection', (socket) => {
userNum++
console.log('有' + userNum + '用户链接了');
io.emit('userNum', userNum)
//接受前端传过来的聊天信息
socket.on('send',(msg)=>{
io.emit('send',{
name:socket.nickName,
msg:msg
})
})
//当用户进入聊天室
socket.on('joinName',(userName)=>{
socket.nickName = userName
io.emit('joinName',{
userName,
status:'进入'
})
})
socket.on('disconnect', function(){
userNum--
io.emit('userNum', userNum)
io.emit('leave',{
userName:socket.nickName,
status:'离开'
})
})
})
app.get('/', (req, res) => {
res.sendFile(__dirname + '/app.html')
io.emit('userNum', userNum)
})