Я прочитал в документации Flask (https://flask -socketio.readthedocs.io / en / latest / # broadcasting ), что отправка сообщения клиенту может быть инициирована событием, возникшим на сервере,Поэтому я решил попробовать это. Идея состоит в том, что клиент отправляет число 15 на сервер каждую секунду, а сервер, независимо от того, что делает клиент, отправляет число 12 клиенту каждые две секунды.
Сторона сервера (.py):
from flask import Flask, jsonify, request, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__, static_folder='')
io = SocketIO(app, cors_allowed_origins="*")
@io.on('connected')
def connected():
print("client connected")
@io.on('messageC')
def messageC(data):
print(data)
def send_messageS():
io.emit('messageS', 12)
if __name__ == '__main__':
import _thread, time
_thread.start_new_thread(lambda: io.run(app), ())
while True:
time.sleep(2)
send_messageS()
клиентская сторона (.html):
<html>
<body>
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="/resources/socket.io.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
var socket = io.connect('http://localhost:5000');
socket.on('connect', function() {
socket.emit('connected');
});
socket.on('messageS', function(data) {
console.log(data);
});
setInterval(function() {
socket.emit('messageC', 15);
},1000);
});
</script>
</body>
В результате число 15 принимается сервером каждую секунду, но число 12 никогда не принимается сервером. клиент.
Что я делаю не так?