如果您使用 Flet 构建聊天应用程序,您需要以某种方式在会话之间传递用户消息。当用户发送消息时,它应该被广播到所有其他应用程序会话并显示在他们的页面上。
Flet 为页面会话之间的异步通信提供了一个简单的内置 PubSub 机制。
Flet PubSub 允许向所有应用会话广播消息或仅向特定“主题”(或“频道”)订阅者发送消息。
典型的 PubSub 用法是:
- 订阅广播消息或订阅应用会话开始时的主题。
- 发送广播消息或发送到某个事件的主题,例如单击“发送”按钮。
- 取消订阅广播消息或取消订阅某个事件的主题,例如单击“离开”按钮。
- 取消订阅上的所有内容page.on_close。
这是一个简单的聊天应用程序的示例:
import flet
from flet import Column, ElevatedButton, Page, Row, Text, TextField
def main(page: Page):
page.title = "Flet Chat"
# subscribe to broadcast messages
def on_message(msg):
messages.controls.append(Text(msg))
page.update()
page.pubsub.subscribe(on_message)
def send_click(e):
page.pubsub.send_all(f"{user.value}: {message.value}")
# clean up the form
message.value = ""
page.update()
messages = Column()
user = TextField(hint_text="Your name", width=150)
message = TextField(hint_text="Your message...", expand=True) # fill all the space
send = ElevatedButton("Send", on_click=send_click)
page.add(messages, Row(controls=[user, message, send]))
flet.app(target=main, view=flet.WEB_BROWSER)