From f235aed99c22a76a79b1fe9a3e814dadc607abe7 Mon Sep 17 00:00:00 2001 From: komppa Date: Fri, 29 Sep 2023 18:23:16 +0300 Subject: [PATCH 1/2] Remove duplicate main.js script tag --- online_log/static/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/online_log/static/index.html b/online_log/static/index.html index 38ddc6639..685a48502 100644 --- a/online_log/static/index.html +++ b/online_log/static/index.html @@ -46,7 +46,6 @@
- \ No newline at end of file From fd02e8af9cd22559fadbf330fd5225e84493883c Mon Sep 17 00:00:00 2001 From: komppa Date: Fri, 29 Sep 2023 18:29:04 +0300 Subject: [PATCH 2/2] Replace HTTP polling with SocketIO --- online_log/app.py | 12 ++++-------- online_log/static/index.html | 1 + online_log/static/js/main.js | 28 ++++++++-------------------- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/online_log/app.py b/online_log/app.py index a684179ef..7172d176c 100644 --- a/online_log/app.py +++ b/online_log/app.py @@ -2,13 +2,14 @@ import requests import os from flask import Flask, send_from_directory, request, jsonify +from flask_socketio import SocketIO import argparse app = Flask(__name__, static_folder='static') app.logger.setLevel(logging.ERROR) log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) -messages = [] +socketio = SocketIO(app) port = [8000] def send_msg(role, text): @@ -34,11 +35,6 @@ def replay(): return send_from_directory("static", "replay.html") -@app.route("/get_messages") -def get_messages(): - return jsonify(messages) - - @app.route("/send_message", methods=["POST"]) def send_message(): data = request.get_json() @@ -48,7 +44,7 @@ def send_message(): avatarUrl = find_avatar_url(role) message = {"role": role, "text": text, "avatarUrl": avatarUrl} - messages.append(message) + socketio.emit("message", message) return jsonify(message) @@ -65,4 +61,4 @@ def find_avatar_url(role): args = parser.parse_args() port.append(args.port) print(f"Please visit http://127.0.0.1:{port[-1]}/ for the front-end display page. \nIn the event of a port conflict, please modify the port argument (e.g., python3 app.py --port 8012).") - app.run(debug=False, port=port[-1]) \ No newline at end of file + socketio.run(app, debug=False, port=port[-1]) \ No newline at end of file diff --git a/online_log/static/index.html b/online_log/static/index.html index 685a48502..958442ba1 100644 --- a/online_log/static/index.html +++ b/online_log/static/index.html @@ -15,6 +15,7 @@ + diff --git a/online_log/static/js/main.js b/online_log/static/js/main.js index 9db603b66..aeb8332fb 100644 --- a/online_log/static/js/main.js +++ b/online_log/static/js/main.js @@ -64,19 +64,12 @@ function parseCodeBlocks(text, role) { } -function get_new_messages() { - - $.getJSON("/get_messages", function (data) { - var lastDisplayedMessageIndex = $("#chat-box .message-container").length; - - for (var i = lastDisplayedMessageIndex; i < data.length; i++) { - var role = data[i].role; - var text = data[i].text; - var avatarUrl = data[i].avatarUrl; - - append_message(role, text, avatarUrl); - - } +function get_messages() { + const socket = io.connect(`${location.hostname}:${location.port}`); + socket.on("connect", function () { + socket.on("message", function(data) { + append_message(data.role, data.text, data.avatarUrl); + }); }); } @@ -130,10 +123,5 @@ function copyToClipboard(element) { $(document).ready(function () { - get_new_messages(); - setInterval(function () { - get_new_messages(); - }, 1000); -}); - - + get_messages(); +}); \ No newline at end of file