Flask SocketIO复制保存的信息

问题描述 投票:0回答:1

我正在构建一个仅基于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)

发生的事情的视觉表现

实际的错误是什么

python flask socket.io flask-socketio python-socketio
1个回答
0
投票

socketio.emit() 函数是不知道上下文的,它默认为向所有连接的用户广播。尝试使用 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)
© www.soinside.com 2019 - 2024. All rights reserved.