面试题答案
一键面试-
安装依赖: 首先确保你已经安装了
ws
库,它是Node.js中常用的WebSocket库。如果没有安装,可以通过以下命令安装:npm install ws
-
代码实现: 创建一个新的JavaScript文件,例如
chatServer.js
,内容如下:const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); // 存储所有连接的客户端 const clients = new Set(); wss.on('connection', function connection(ws) { // 处理新用户连接 clients.add(ws); console.log('新用户连接'); ws.on('message', function incoming(message) { // 处理消息接收 console.log('收到消息:', message); // 广播消息给所有客户端 clients.forEach((client) => { if (client!== ws && client.readyState === WebSocket.OPEN) { client.send(message); } }); }); ws.on('close', function close() { // 处理用户断开连接 clients.delete(ws); console.log('用户断开连接'); }); });
-
说明:
- 新用户连接:当有新的WebSocket连接时,
wss.on('connection',... )
回调函数会被触发。在这个回调中,我们将新连接的ws
对象添加到clients
集合中,并在控制台打印提示信息。 - 消息发送与接收:当客户端发送消息时,
ws.on('message',... )
回调函数会被触发。接收到消息后,我们在控制台打印收到的消息,并通过遍历clients
集合,将消息广播给除发送者之外的所有处于OPEN
状态的客户端。 - 用户断开连接:当客户端断开连接时,
ws.on('close',... )
回调函数会被触发。在这个回调中,我们将对应的ws
对象从clients
集合中删除,并在控制台打印提示信息。
运行这个服务器后,客户端就可以通过WebSocket连接到
ws://localhost:8080
进行实时聊天。 - 新用户连接:当有新的WebSocket连接时,