我目前正在尝试弄清楚如何使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变量已更新。
但是我不知道如何使套接字有效。
谢谢