Невозможно отображать сообщения на HTML-странице в приложении чата с помощью flask-socketio

#python #flask-socketio

#python #flask-socketio

Вопрос:

Я создаю приложение для чата flask с использованием flask-socketio. Когда я нажимаю кнопку отправки, на экране не отображаются сообщения. Я ссылался на документацию flask-socketio для настройки всего. Может кто-нибудь, пожалуйста, помогите мне здесь.
mainapp.py фрагмент текста

 from flask_socketio import SocketIO, send, emit
app = Flask(__name__)
app.secret_key = 'replace later'

# Initialise Flask-Socketio
socketio = SocketIO(app)

@app.route("/chat", methods=['GET', 'POST'])
def chat():
    return render_template('chat.html')

@socketio.on('message')
def message(data):
    #print(f"n{data}n")
    send(data)

  

chat.html фрагмент текста

 <div id="display-message-section">
</div>
<!-- Input area -->
<div id="input-area">
    <input type="text" id="user_message" placeholder="Type here..." autocomplete="off">
    <button type="button" id="send_message">SEND</button>
</div>
<!-- SocketIO JS -->
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I="
    crossorigin="anonymous"></script>

<!-- Custom SocketIO JS -->
<script src="{{ url_for('static', filename='scripts/socketio.js') }}"></script>
  

socketio.js (который находится в статическом / скриптовом) фрагменте

 document.addEventListener('DOMContentLoaded', () => {
    var socket = io.connect('http://'   document.domain   ':'   location.port);

    socket.on('connect', () => {
        socket.send("I am connected");
    });

    socket.on('message', data =>{
        const p = document.createElement('p');
        const br = document.createElement('br');
        p.innerHTML = data;
        document.querySelector('#display-message-section').append(p);
    });

    document.querySelector('#send_message').onclick = ()=>{
        socket.send(document.querySelector('#user_message').value);
    }
})
  

Как выглядит результат — ссылка на изображение 1

Как это должно выглядеть — Ссылка на изображение 2

Комментарии:

1. Пожалуйста, включите сокет. IO регистрируется на сервере и включает их в свой вопрос. Также посмотрите на вкладку сети браузера на наличие ошибок.

Ответ №1:

Попытался очистить файлы cookie и кеш, и сейчас все работает нормально.