私は django をほぼ 6 か月間使用しており、ほとんどすべての種類の Web サイトで問題なく動作します。
しかし、最近、ウェブサイトを作成していたときに、他のユーザーが更新したブログ投稿についてユーザーに通知されるという問題に遭遇しました。
私のアプローチはこれでした:
私のテンプレートから、次のような ajax 呼び出しを続けます。
$(document).ready(function() {
setInterval(function(){get_updates();}, 10000);
function get_updates(){
$.ajax({
type: "GET",
datatype: 'json',
url: "{% url 'models.views.update_notification' %}",
success: function(data) {
if(data.updated){
$.("content").load('notifications.html');
}
}
})
})
});
}
class UpdateNotificationView(View):
def get(self, request):
user = FriendUser.objects.get(name='friend')
msg = {"updated" : user.is_updated()}
return HttpResponse(simplejson.dumps(msg))
notifications.html
それがすべてのページに含まれている部分的な ものであると仮定します:
<div id='divid'>{{ notification }}</div>
ここでの問題は、このような ajax 呼び出しを x 秒/分ごとに実行し続けるのは良い考えではないと思います。
このような更新をポーリングせずに、データベースがブラウザに直接更新されるとすぐに、バックエンドから更新をプッシュする方法はありますか?
それとも、djangoはそれを補っていませんか?