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

联系人列表

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

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

更新 main.py:

@@ -3,7 +3,20 @@ import socketio
 sio = socketio.AsyncServer(async_mode='asgi', cors_allowed_origins='*')
 app = socketio.ASGIApp(sio)
 
+users = {}
+
 
 @sio.event
 async def connect(sid, environ):
     print('A user connected:', sid)
+
+
+@sio.on('user-join')
+async def user_join(sid, user):
+    if 'name' not in user:
+        return
+    print(f"User {sid} => {user['emoji']} {user['name']} joined")
+    users[sid] = {**user, 'sid': sid}
+    print(list(users.items()))
+    # Broadcast to all connected clients
+    await sio.emit('contacts', list(users.items()))

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