Pu sh сообщение для всех онлайн-пользователей, использующих Flask, БЕЗ создания потоков для каждого пользователя - PullRequest
0 голосов
/ 27 мая 2020

Предположим, это чат-группа. Есть ли способ добавить новые сообщения, отправленные любым членом определенной группы, на страницу html всех онлайн-пользователей в этой группе, используя FLASK.

БЕЗ: создание цепочки для каждого пользователя и мониторинг последних обновлений в чатах.

1 Ответ

1 голос
/ 27 мая 2020

Это пример с очень минимальным кодом. Если вам интересно, вы можете изучить больше и провести эксперименты.

Во-первых, вам понадобится модуль Flask -SocketIO, запустите приведенную ниже команду, чтобы установить его.

pip install flask-socketio

С В этом примере каталог проекта будет выглядеть примерно так:

ProjectDirectory
|
|-> templates
|   |
|   |-> index.html
|
|-> app.py

app.py

from flask import Flask, render_template
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'randomSecretKEy@123'
socket = SocketIO(app)


@app.route('/')
def index():
    return render_template('index.html')


@socket.on('message')
def message(data):
    print(data)
    emit('receive_message', data, broadcast=True)


if __name__ == '__main__':
    socket.run(app)

index. html

<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
<script src="//code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
    var socket = io();
    socket.on('connect', function() {
        console.log('Connected to server');
    });
    socket.on('receive_message', function(msg) {
        console.log('Received message: ', msg)
    })
    function sendMessage() {
        msg = $('#message').val()
        socket.emit('message', msg)
    }
</script>
<input type="text" id="message"><button onclick="sendMessage()">Send</button>

Запустите приложение Flask, откройте две вкладки браузера с инструментами веб-разработчика, открытыми рядом. Как только вы откроете, вы увидите, что сообщение Connected to server было зарегистрировано. Теперь введите какое-нибудь сообщение и нажмите кнопку отправки на одной вкладке, и вы увидите, что сообщение было получено на консоли другой вкладки.

Я надеюсь, что вы получите направление, и это полезно для вы.


Примечание: Опять же, я говорю, что это очень простой пример c. Конечно, вы можете добавить больше logi c и функциональности и сделать его больше похожим на приложение для чата, но это выйдет за рамки этого вопроса. Итак, я оставлю это вам и вашему воображению, насколько вы можете научиться и продвигаться вперед. О документации модуля можно прочитать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...