Я сейчас пытаюсь выяснить, как заставить 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 работать.
Спасибо