0

我正在使用 Django Rest Framework、Flutter 和 MongoDB 构建一个移动应用程序。在该应用程序中,用户可以查看其他用户发布的帖子。在我的 Django 应用程序中,我没有任何通知模型(老实说,我也不知道如何使用它!)。在 Django 中,我创建了端点来创建帖子

@api_view(['POST'])
def createPost(request):
   code/logic...

, 并检索帖子

class blogsViewSet(ModelViewSet):
    queryset = Posts.objects.all()
    serializer_class = PostSerializer
    pagination_class = pagination.CustomPagination
    
    def list(self, request, *args, **kwargs):
        uid = request.META.get('HTTP_DATA')
        context = {"user": uid}
        queryset = Posts.objects.all().order_by('postID')
        paginatedResult = self.paginate_queryset(queryset)
        serializer = self.get_serializer(paginatedResult, many=True, context= context)
        return Response(serializer.data)

现在在我的应用程序中,假设我有两个用户:用户 A用户B。现在,如果他们两个同时使用该应用程序并且用户 A 创建了一个新帖子,我希望用户 B 收到通知并立即显示该新帖子,而用户 B 不必自己重新加载页面。

现在我的问题是,我可以通过仅使用 Django 频道来实现这一点,还是必须使用 Redis(或任何类似的服务)。如果是,那么如何?

谢谢!

4

1 回答 1

0

首先要做的事情:这是一个复杂的话题。所以这里没有复制粘贴解决方案‍♂️你有很多选择,我已经恢复了几个我喜欢的:

  1. Django 频道
  2. 带有 Websockets 的独立微服务(我的选择!
  3. FCM 数据消息(Firebase 云消息传递)

Websockets 在客户端和服务器之间的双向通信方面非常简单且非常有用。如果您的应用程序的功能列表增加,您可能需要在应用程序中添加其他事件。WS 将帮助您扩展。

Redis是用于缓存或存储目的的键值存储,作为队列的后端等。是的,Django Channels 在后端使用 Redis,但这可能会让人感到困惑,Redis 是为 WebSockets 制作的 =) 它不是

看看 WebSockets,它们会在你的开发者职业生涯中多次帮助你。

于 2022-01-31T16:29:39.460 回答