» Node.js:使用Socket.IO创建Web Chat App在线聊天应用 » 2. 开发 » 2.2 联系人列表

联系人列表

使用 Map 在内存中保存所有用户信息。

在大规模项目中,你需要使用数据库来存储信息。

更新 app.js:

@@ -10,9 +10,21 @@ const io = new Server(server, {
   },
 });
 
+// Use a Map to store all connected users
+const users = new Map();
+
 // Handle incoming socket connections
 io.on("connection", (socket) => {
-  console.log("A user connected", socket.id);
+  socket.on("user-join", (user) => {
+    if (!user.name) {
+      return;
+    }
+    console.log(`User ${socket.id} => ${user.emoji} ${user.name} joined`);
+    users.set(socket.id, { ...user, sid: socket.id });
+
+    // Broadcast to all connected clients
+    io.emit("contacts", Array.from(users.entries()));
+  });
 });
 
 // Start the server

io.emit 将最新的联系人列表广播给所有用户。