0
練習のために、私はFlaskサーバーがHTMLページのコンソールに常に "Hello"を印刷するようにしようとしています。私は現在どのように進行するのか分からない。Flaskサーバー(Python)からHTMLクライアントにメッセージをどのように送信しますか?
私クライアントコードは次のようになりますが、現在、私のサーバーコードこの
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@socketio.on('message')
def handle_message(message):
print('Message: ' + message)
send(message)
@socketio.on('json')
def handle_json(json):
send(json, json=True)
@socketio.on('my event')
def handle_my_custom_event(json):
emit('my response', json, broadcast=True)
def hello():
emit('message', {'hello':"Hello"})
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
socketio.run(app)
while True:
hello()
次のようになります。
<head>
<script type="text/javascript" charset="utf-8">
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('connect', function() {
socket.emit('connected');
});
socket.on('message', function(data) {
console.log(data);
});
</script>
</head>
しかし、私は私のコンソールログには何も届きませんページのFlaskサーバーからコンソールに送信されたメッセージを印刷するにはどうすればよいですか?私は間違って何をしていますか?
"Hello"文字列の代わりにJSONを印刷する必要があります。これも問題ありません。私はちょうどサーバーからWebコンソールに何かを印刷したい。
素晴らしい!!どうしたら定期的にメッセージを送信するのですか(5秒ごとに)? – Jon
通常、あるイベントが発生したときにサーバーから接続されたクライアントにメッセージを送信させるだけです。サーバーが同じメッセージを単に連続して送信することは実際には意味がありません。しかし、本当にこの道を踏み切りたいのであれば、5秒ごとにsocketioメッセージを出すバックグラウンドスレッドを開始できるかもしれません。 –
ご協力いただきありがとうございます!その例も提供していますか(私はオンラインの例を見つけてそれを試して、それを動かすことができませんでした)? – Jon