» Python:使用Socket.IO创建Web Chat App在线聊天应用 » 2. 开发 » 2.3 聊天消息

聊天消息

对服务端而言,一对一聊天就是将消息从一个 socket 转发到另一个 socket。

更新 main.py:

@@ -17,6 +17,11 @@ async def user_join(sid, 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.event
+async def chat(sid, data):
+    to = data['to']
+    await sio.emit('chat', data, room=to)

data 包含以下字段:

  • to: 消息的目标接收者 socket ID。
  • from: 发送者的 socket ID。
  • msg: 消息内容。

sio.emit() 带有 room 参数可以用于将发出(emit)的事件指定到目标 sockets 或房间。