Я пытаюсь создать задержку в сценарии на стороне сервера приложения flask для веб-сокетов.
В конечном счете, я хочу, чтобы сервер обрабатывал много одновременных запросов и мог отправлять обратно клиенту два пакета с фиксированным интервалом времени между
Когда я использую time.sleep(x)
между двумя flask_socketio.emit
инструкциями клиент получает события генерации сокета вместе после завершения сна.
Как мне достичь Emit X; wait Y seconds; emit Z
в приложении python flask?
Выдержка кода на стороне сервера:
from flask import Flask, request
from flask_socketio import SocketIO, join_room, emit
app = Flask(__name__)
socketio = SocketIO(app)
@socketio.on('ping')
def ping(appState):
"""send 2 pings, between a time interval"""
room = appState["sessionID"]
emit('serverPingResponse', {'room': room, 'msg':"Ping Received by Server"})
time.sleep(5)
emit('serverPingResponse', {'room': room, 'msg':"2nd time-delayed ping"})
return
Выдержка кода на стороне клиента:
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on("serverPingResponse", function(msg){
// listen to server ping and print the message to console
let d = new Date();
console.log("ping received at "+d.toLocaleTimeString(), msg)
});
Вывод на консоль
pinging server...
ping received at 10:43:14 AM
Object { room: "wvdhj01f3p", msg: "Ping Received by Server" }
ping received at 10:43:14 AM
Object { room: "wvdhj01f3p", msg: "2nd time-delayed ping" }
Требуемый выход будет для первого пинга, который будет получен в 10:43:09
, а второй в 10:43:14