[英]Flask SocketIO duplicating saved messages
我正在構建一個僅基於 Flask SocketIO 的聊天應用程序,沒有數據庫。 其中一項要求是當新用戶連接時,應用程序應顯示以前的消息。 我將每條消息保存到每個發送事件的數組中。 好的,現在的問題是,當用戶 A 連接並創建一些消息,然后用戶 B 連接時,會顯示來自用戶 B 的所有先前消息,但隨后用戶 A 也收到了這些消息,因此用戶 A 最終得到重復的消息。
客戶端 JS
function myFunction() {
document.getElementById('demo').style['text-decoration']='underline';
}
const socket = io.connect("http://127.0.0.1:5000");
socket.on('connect', function() {
socket.emit('sync_messages');
socket.emit('sync_channels');
});
Flask 應用代碼
@socketio.on('sync_messages')
def handle_sync():
socketio.emit('show_all_messages', messages)
@socketio.on('sync_channels')
def handle_sync_channels():
socketio.emit('show_all_channels', channels)
正在發生的事情的可視化表示
socketio.emit()
function 不是上下文感知的,它默認廣播給所有連接的用戶。 嘗試使用emit()
,它是 Flask 友好的包裝器:
@socketio.on('sync_messages')
def handle_sync():
emit('show_all_messages', messages)
@socketio.on('sync_channels')
def handle_sync_channels():
emit('show_all_channels', channels)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.