Flask SocketIO Уведомления - PullRequest
       32

Flask SocketIO Уведомления

0 голосов
/ 30 января 2019

Я сейчас пытаюсь выяснить, как заставить socketIO работать для push-уведомлений.Я не знаю, как отправлять информацию базы данных в сокет и как переводить в Jquery ...

Что я пытаюсь сделать, это сравнить последний раз, когда пользователи видели раскрывающийся список уведомлений, и есливременная метка пользователя старше уведомления базы данных, я хочу сделать интервал с количеством невидимых уведомлений.

Вот мой route.py:

@socketio.on('notif')
def handle_message():
    if current_user.is_authenticated:
        notif = Notification.query.filter(
        Notification.timestamp < current_user.last_seen_notification)
        n = len(notif)
    send(n)

@app.route('/notification', methods=["POST"])
def notification():
    current_user.last_seen_notification = datetime.datetime.now()
    db.session.commit()
    return 'Ok'

У меня есть мойhtml:

    <li class="dropdown nav-item">
<a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown" id="notifbtn">
<i class="nc-icon nc-planet"></i>
<span class="notification"></span>
<span class="d-lg-none">Notification</span>
</a>
<ul class="dropdown-menu">
<a class="dropdown-item" href="#">Notification 1</a>
<a class="dropdown-item" href="#">Notification 2</a>
<a class="dropdown-item" href="#">Notification 3</a>
<a class="dropdown-item" href="#">Notification 4</a>
<a class="dropdown-item" href="#">Another notification</a>
</ul>
</li>

и мой javascript:

$(document).ready(function() {

    $("#notifbtn").on('click', function() {
        $.ajax({
            type : 'POST',
            url : '/notification'
        })
    });

    var socket = io.connect('http://127.0.0.1:5000');

    socket.on('notif', function() {
        $('.notification').text(n);
        console.log('Received message');
    });
});

Мой javascript с раскрывающимся списком работает хорошо, когда пользователь нажимает на раскрывающийся список, его переменная last_seen_notification обновляется.

Но я не знаю, как заставить socketio работать.

Спасибо

...