实现stackoverflow';使用django的s通知系统

实现stackoverflow';使用django的s通知系统,django,notifications,Django,Notifications,我见过这样的问题。它讨论了实现的客户端 我正在寻找有关服务器部分和网络部分的信息(客户端如何获得实时通知) 用户场景可能如下所示: 用户a发生了一些事情 服务器在DB中为用户a创建一条消息(用于持久性):我正在为此使用django活动流 服务器向用户a的浏览器发送(新的或最近的10条)消息(当用户a登录或事件发生时) 浏览器显示消息(部分) 如果用户确认该消息(在SO中单击收件箱),则所有未看到的消息都将标记为已读并记录在服务器中 我对以下步骤有疑问 (3) 不确定,但可以使用 (4) 问题的

我见过这样的问题。它讨论了实现的客户端

我正在寻找有关服务器部分和网络部分的信息(客户端如何获得实时通知)

用户场景可能如下所示:

  • 用户a发生了一些事情
  • 服务器在DB中为用户a创建一条消息(用于持久性):我正在为此使用django活动流
  • 服务器向用户a的浏览器发送(新的或最近的10条)消息(当用户a登录或事件发生时)
  • 浏览器显示消息(部分)
  • 如果用户确认该消息(在SO中单击收件箱),则所有未看到的消息都将标记为已读并记录在服务器中
  • 我对以下步骤有疑问

    • (3) 不确定,但可以使用
    • (4) 问题的答案是客户机从服务器接收了json数据。
      服务器是否为每个请求向用户发送消息?
      客户机是否检查本地存储(我是web新手,什么是用于此目的的好本地存储?)并在本地存储中没有json数据时请求json数据
    • (5) 我应该如何实现这个
      已看到的
      未看到的
      ?django活动流没有它们的概念

    这可以通过使用来轻松实现,因为您需要WebSocket具有双向客户机-服务器通信

    显示通知是一种双向通信。服务器通知客户端新通知可用。客户端向用户显示此通知,然后当用户与通知交互时,客户端通知服务器通知已读取,因此下次用户加载页面时,仅显示未读通知

    其中包括一些步骤

  • 您的服务器需要能够支持websocket通信<代码>django频道将应用程序转换为ASGI
  • 创建可以向websocket发送和接收消息的websocket使用者
  • 当用户打开应用程序时,客户端将创建到服务器的websocket连接通道
  • 每当需要发送新通知时,服务器将向通道发送消息
  • 收到消息后,客户端使用Javascript在网页上呈现通知。比如显示新消息图标,将新消息添加到消息列表中,等等
  • 现在,一部分完成了。已通知您的用户。第二部分

  • 用户看到钟形图标或其他什么,点击它,他就会看到通知的详细信息(这是由js在客户端收到消息时呈现的)
  • 用户单击通知/铃声图标。此时,客户端将向服务器发送一个通知,以便服务器可以更新所有已读取的通知
  • 我创建了一个应用程序,在显示新消息时更新客户端


    你也可以参考一个类似的问题:

    我来这里问同样的问题:)你运气好吗?我进入django频道,不是为了这一个,但我认为它也可以用于这一个。2017年,还没有人回答,我现在也在研究如何做,我认为最好的方法是使用任何一个通道,或者使用web套接字。在很多情况下,不是服务器ping用户,而是客户端使用AJAX或一些自定义Javascript代码通过API请求和更新服务器信息。通常这只是一个超时请求,没有什么特别的。对于可见/不可见,您只需通过Javascript添加一个点击验证,点击后更新的信息将发送回服务器。