在服务器端使用Socket
server.js:
const net = require ('net') // 引入net模块
const server = net.createServer() // 创建server服务端
const clients = [] // 创建一个数组,用来存储客户端通信的信息
server.on('connection', clientSocket => { // 监听服务端的连接事件
// 把当前连接的客户端通信接口存储
clients.push(clientSocket)
// 监听客户端的信息事件
clientSocket.on('data', data => {
console.log('有人说:', data.toString())
// 把数据发给所有的客户端
clients.forEach(socket => {
// 排除自己
if (socket !== clientSocket) {
socket.write(data)
}
})
})
// 给客户端发送消息
clientSocket.write('hello')
})
server.listen(3000, () => {
console.log('Server running at port 3000')
clients.js
const net = require('net')
const client = net.createConnection({
host: '127.0.0.1',
port: 3000
})
client.on('connect', () => {
console.log('客户端与服务器建立连接成功')
// 监听客户端发送消费给服务器端
process.stdin.on('data', data => {
// 转换字符串和去空格,否则enter也是发送消息的一部分信息
data = data.toString().trim()
// 发送给服务端
client.write(data)
})
})
// 客户端监听data事件,当服务器发消息过来就会触发该事件
client.on('data', data => {
console.log('服务器说:'+data.toString())
})
node server.js // nodemon server.js
上面就是实现基本群聊的原理