首页 > 解决方案 > socket.emit 延迟在 flask_SocketIO 中不起作用

问题描述

我有 flask_socketIO Python 服务器:

from flask import Flask
from flask_socketio import SocketIO
import time

app = Flask(__name__)
sio = SocketIO(app)

@sio.on("client_connect")
def client_connect():
    sio.emit("test")
    time.sleep(1)  # Should be computationally complex code: for i in range(1000000): ...
    sio.emit("test")


sio.run(app)

和 socketio Python 客户端:

from socketio import Client
import time

sio = Client()
sio.connect("http://localhost:5000") 

@sio.event
def test():
    print("TEST socket message", time.time())

sio.emit("client_connect")

所以应该执行这些步骤:

  1. 客户端连接到服务器
  2. 客户端向服务器发送client_connect消息
  3. 服务器向test客户端发送消息
  4. 服务器等待 1 秒
  5. 服务器向客户端发送另test一条消息

1 和 2 工作,但不是下一步,服务器首先等待 1 秒,然后test在(几乎)同一时间发送两次消息。所以客户端的输出是(在同一秒内收到两条消息):

TEST socket message 1595397405
TEST socket message 1595397405

难道我做错了什么?

标签: pythonflasksocket.ioflask-socketiopython-socketio

解决方案


推荐阅读