python Flet 異步廣播訂閱:解決無法接收其他用戶消息的問題
在使用Flet構建實時應用時,廣播訂閱是關鍵功能。然而,近期用戶反饋,基于官方示例修改的異步訂閱程序僅能接收自身發送的消息,無法接收其他用戶的消息,這嚴重影響了應用的實時通信能力。
問題詳解
用戶基于Flet官方示例修改了異步訂閱代碼,嘗試構建聊天功能,但結果只能接收自身發送的消息。問題代碼如下:
import flet as ft import flet_fastapi async def main(page: ft.Page): page.title = "Flet Chat" async def on_message_async(msg): messages.controls.append(ft.Text(msg)) await page.update_async() await page.pubsub.subscribe_async(on_message_async) async def send_click(e): await page.pubsub.send_all_async(f"{message.value}") message.value = "" await page.update_async() messages = ft.Column() message = ft.TextField(hint_text="Your message...", expand=True) send = ft.ElevatedButton("Send", on_click=send_click) await page.add_async(messages, ft.Row(controls=[message, send])) #ft.app(target=main, view=ft.AppView.WEB_BROWSER) # Works locally, but not for server deployment app = flet_fastapi.app(main) # Only receives self-sent messages
使用ft.app (本地運行正常,但無法部署到服務器) 與 flet_fastapi.app (僅接收自身消息) 的對比突顯了問題所在。
解決方案
經與Flet框架開發者確認,此問題源于框架自身的bug。目前,最佳解決方案是等待Flet框架更新修復此Bug。
立即學習“Python免費學習筆記(深入)”;
在等待官方修復期間,開發者可考慮以下替代方案:
- 使用其他通信庫/框架: 探索其他實時通信技術,例如websocket庫,來實現應用間的實時消息傳遞。
- 持續關注Flet更新: 密切關注Flet官方發布的更新信息,以便在Bug修復后及時升級。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦