我正在尝试使用Pusher和Django构建应用程序。我查看了一些链接,例如https://github.com/pusher/django-pusherable,但缺少示例,因此很难理解!有人可以在这里帮忙吗?
还有,在这里的通道是什么,如何使用它们创建关注-跟随系统和动态流?谢谢!
Pusher允许您轻松实现消息的发布/订阅模式(也称为pub/sub)。
在此模式中,有许多通道。每个通道就像收音机台的频率一样。发布者将消息放在通道上,任何正在侦听该通道的订阅者(听众)都将收到该消息。
发布者不知道有多少人正在收听特定的通道,它只是发送消息。订阅者需要自行决定要收听哪些通道。
实际上,一个通道通常包含一个事件类型;因此,订阅者可以根据事件类型决定如何处理数据。这有时也被称为消息类。
例如,股票更新可以是一个通道。发布者(您的后端脚本)将在股票变化时向此通道推送消息;任何正在此通道上侦听的客户端都将收到该消息。
有关通道的更多信息,请参见通道API指南。
Pusher负责管理通道并提供编写监听器的工具。from pusher import Pusher
pusher.trigger(u'test-channel', u'my-event', {u'message': u'hello world'})
从消费者(客户端)方面来看:
var channel = pusher.subscribe('test-channel');
channel.bind('my-event', function(data) {
alert('An event was triggered with message: ' + data.message);
});
django-pusherable
模块只需通过装饰您的视图即可轻松创建频道。modelclass_pk
,因此如果您的模型名为Book,并且您刚刚创建了第一本书,该频道将被称为Book_1
。from pusherable.mixins import PusherDetailMixin, PusherUpdateMixin
class BookDetail(PusherDetailMixin, DetailView):
model = Book
class BookUpdate(PusherUpdateMixin, UpdateView):
model = Book
obj
是书的对象:{% load pusherable_tags %}
{% pusherable_script %}
{% pusherable_subscribe 'update' obj %}
<script>
function pusherable_notify(event, data) {
console.log(data.user + "has begun to " + event + " " + data.model);
}
</script>
def book_update(request):
obj = get_object_or_404(Book, pk=1)
return render(request, 'update.html', {'obj': obj})
在您的应用程序中,应该已经创建了“关注”另一个用户的逻辑。也就是说,您必须拥有一个视图,允许用户关注其他人。一旦他们关注某个人,将会在数据库中创建/更新记录。此操作将触发Pusher发布该数据库对象的消息。现在,谁在监听该频道,将接收到该消息,然后可以对其进行任何操作。
以下是事件/开发的顺序:
首先,像往常一样创建您的应用程序。它应该具有您所期望的所有功能。如果这是一个社交网络,人们应该能够关注其他人,并刷新其个人资料页面以查看来自关注者的任何更新。
系统应该已经“知道”每个实体的更新和存储的内容。因此,如果您正在创建“用户”和“关注者”,则应该已经有表单、屏幕、逻辑、数据库表等,以确保可以由正确的用户添加、更新内容。
一旦您正确地放置并按照您的喜好工作,现在您引入Pusher;然后您决定要自动更新哪个“事件”在浏览器中。
PusherUpdateMixin
。