Flask SocketIO通知

时间:2019-01-30 16:42:12

标签: python flask socket.io flask-socketio

我目前正在尝试弄清楚如何使socketIO用于推送通知。 我不知道如何将数据库信息发送到套接字以及如何在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变量已更新。

但是我不知道如何使套接字有效。

谢谢

0 个答案:

没有答案