python - 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")
所以应该执行这些步骤:
- 客户端连接到服务器
- 客户端向服务器发送
client_connect
消息 - 服务器向
test
客户端发送消息 - 服务器等待 1 秒
- 服务器向客户端发送另
test
一条消息
1 和 2 工作,但不是下一步,服务器首先等待 1 秒,然后test
在(几乎)同一时间发送两次消息。所以客户端的输出是(在同一秒内收到两条消息):
TEST socket message 1595397405
TEST socket message 1595397405
难道我做错了什么?
解决方案
推荐阅读
- reactjs - 在兄弟父组件之间共享状态
- r - 使用自定义函数加速 rollapply 的技术 (r)
- javascript - 如何在 javascript 上创建一个简单的重力引擎
- html - 在 wordpress 中使用附加 css 使 div 类居中时遇到问题
- android - 如何在 strings.xml 中引用其他字符串?
- python - 在 Pandas 数据框中的 2 个日期之间添加日期列
- python - 如何让 Pycharm 的覆盖工具与猴子补丁一起工作?
- javascript - 为什么我的 EventListener 没有产生一次循环迭代?
- python - 将系列而不是整数传递给熊猫偏移量
- java - Java从包含Intellij中包含双精度数组的对象的对象数组中访问数组元素