У меня есть следующий скрипт Python, который использует Flask-socketio
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
from time import sleep
app = Flask(__name__)
app.config['SECRET_KEY'] = 'P@ssw0rd'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect')
def on_connect():
payload1 = 'Connected!!!'
payload2 = 'Doing thing 1'
payload3 = 'Doing thing 2'
emit('send_thing', payload1, broadcast=True)
sleep(2)
emit('send_thing', payload2, broadcast=True)
sleep(2)
emit('send_thing', payload3, broadcast=True)
if __name__ == '__main__':
socketio.run(app)
А вот соответствующий index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SocketIO Python</title>
</head>
<body>
<div id="my-div"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.js"></script>
<script>
(function init() {
var socket = io()
var divElement = document.getElementById('my-div')
socket.on('send_thing', function(payload) {
var dataElement = document.createElement('inner')
dataElement.innerHTML = payload
divElement.appendChild(dataElement)
})
})()
</script>
</body>
</html>
Что я пытаюсь достичь, это когдаклиент подключается, он сначала говорит «Подключен !!!»а затем через 2 секунды появляется новый «внутренний» элемент с надписью «Делать вещь 1», а затем через 2 секунды появляется новый «внутренний» элемент с надписью «Делать вещь 2» и т. д.
Но что происходитзаключается в том, что когда клиент подключается, он отправляет все 3 строки одновременно (через 4 секунды, что является обеими операторами сна).Это первый раз, когда я использую SocketIO, поэтому я уверен, что сделал что-то не так.