【发布时间】:2020-09-24 06:22:23
【问题描述】:
我正在尝试为我的 Events Manager 网站创建通知系统。
每当用户登录并做某事(例如,如果他创建了一个事件),他创建了一个事件的通知应该发送给其他用户。通知应该在“ strong>/notification/:username' 已通过身份验证的页面(其中每个用户的用户名都是唯一的)。
此外,如果用户创建私人事件,则必须将通知发送给相关用户。
我正在使用 Nodejs(Express)、socket.io、Vanilla javascript、mysql。为此,如果我是正确的,我需要存储 clientid(在我的情况下,它是用户名)和数据库(mysql)中的socketid作为键值对。但是我对如何继续感到困惑?我不知道如何获取不同用户的 socketid 并存储在数据库中。我不知道如何进行。如果有人向我解释我应该做什么,我需要解决什么问题等,那就太好了。谢谢!
【问题讨论】:
-
socket.id是一个暂时的东西。一旦用户点击刷新或转到不同的网页,socket.id就会改变。更典型的是,您会在内存中而不是在 mysql 数据库中跟踪它。通常不需要持久化socket.id,因为它的持续时间永远不会超过您的服务器。集群设置可能会集中存储 id,因此集群中的任何服务器都可以获取它(这通常通过像 redis 这样的基于内存的存储来完成)。 -
好的,所以我没有使用redis。有没有为特定用户存储socketids?此外,如果除了使用 socket.id 之外还有其他方法可以解决此问题,您可以告诉我。谢谢
-
有一个问题,你需要连接才能监听通知,并接收它们,如果socket断开你无法接收通知,所以你要找的不是socket .io 或套接字,您正在寻找推送通知(对此进行调查),是一种在用户未连接时也可用于处理通知的服务(如 whatsapp 通知),推送通知服务的一个示例是 onesignal,我使用 onesignal 与 ionic for android 一起工作,但我认为也可以用于网页。
-
您能告诉我一些可以了解推送通知的资源吗?
标签: javascript mysql node.js express socket.io