index.js
const express = require('express');
const { createServer } = require("http")
const { Server } = require("socket.io")
// express实例
const app = express();
const httpServer = createServer(app);
// socketIo实例
const io = new Server(httpServer, {
// 跨域
cors: {
origin: "*"
},
});
/**
*
* @param {String} evntName 事件名称
* @param {String} payload 消息
* @param {Boolean} skip 是否发送自己信息
*/
// 客户端建立链接
io.on("connection", (socket) => {
function broadcast(evntName, payload, skip = false) {
if (!skip) {
socket.emit(evntName, payload)
}
socket.broadcast.emit(evntName, payload)
}
// 用户名 初始化事件
socket.on("init", (name) => {
socket.nickName = name;
// 广播所有客户端一段消息,需要给自己发
broadcast("message", {
nickName: "系统消息",
text: `欢迎${name}进入聊天室`
});
});
/**
* 客户端发的信息
* text 消息内容
*/
socket.on("message", (text) => {
// 广播其他人
socket.broadcast.emit("message", {
nickName: socket.nickName,
text,
// 别人发送的时候跳过自己,不需要给自己发
}, true)
})
})
// 服务器端口启动
httpServer.listen(3000, () => {
console.log("启动");
});