簡體   English   中英

Flask SocketIO 復制保存的消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM