43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
'''
|
|
0. 消息模型
|
|
1. 消息盒子(储存消息)
|
|
2. 消息信道(收发消息)
|
|
'''
|
|
|
|
from pydantic import BaseModel
|
|
from datetime import datetime
|
|
|
|
class Message(BaseModel):
|
|
id: str # 消息ID(可基于此更新消息)
|
|
type: str # 消息类型(可基于此分发消息)
|
|
data: dict # 消息数据(用于展示的消息主体)
|
|
date: datetime=datetime.now() # 时间(消息被创建的时间)
|
|
|
|
class MessageBox:
|
|
def __init__(self, sender, receiver, content):
|
|
self.sender = sender
|
|
self.receiver = receiver
|
|
self.content = content
|
|
|
|
def send(self):
|
|
self.receiver.receive(self)
|
|
|
|
def __str__(self):
|
|
return 'From: %s' % self.sender
|
|
|
|
class MessageChannel:
|
|
pass
|
|
|
|
|
|
#def watch(self, websocket: WebSocket, task: Task):
|
|
# await websocket.accept()
|
|
# # 将websocket连接加入到任务的观察者列表中
|
|
# task.add_observer(websocket)
|
|
# await websocket.send_text(f"Task {task.id} is being watched")
|
|
# # 从websocket连接中读取消息
|
|
# await websocket.receive_text()
|
|
# # 将websocket连接从任务的观察者列表中移除
|
|
# task.remove_observer(websocket)
|
|
# await websocket.send_text(f"Task {task.id} is no longer being watched")
|
|
# await websocket.close()
|