我想要创建一个实时通知系统,但不确定什么是最好的架构。
这是我的应用程序将要经历的旅程。
这就是我不确定的地方
无论是另一个正在寻找此通知的用户,每10秒左右连续轮询一个通知API以获得通知,或者我们使用某种websocket。
我觉得投票的方法会更密集,更难扩展。
在websocket中,我基本上计划每10秒轮询一次数据库,除非数据库中有一个触发器调用websocket等等。
对此有什么想法吗,或者我错过了什么选择?
我的技术栈是Node,如果这有关系的话,请响应MYSQL。
发布于 2020-10-17 14:05:42
我不太清楚你在处理通知时想做什么。对于一个实时应用程序,我会使用socket.io。上述通知是否意在提醒其他用户新用户已加入?如果是这样的话,socket.io也很容易做到这一点。每次新用户连接到这样的套接字时,您也可以从db检索信息(MongoDB与Mongoose一起使用):
mongoose.connect('mongodb://localhost:27017/DBNAME', {useNewUrlParser: true, useUnifiedTopology: true});
let exampleSchema = new mongoose.Schema({
....
....
})
let exampleModel = new mongoose.model("exampleModel", exampleSchema )
mongoose.connect('mongodb://localhost:27017/ExampleDB', {useNewUrlParser: true, useUnifiedTopology: true});每次建立新的套接字连接时,下面的代码都会搜索整个数据库。然后,它将向所有连接的套接字发出通知数据。
let io = new sio(server);
io.on('connection', (socket) => {
exampleModel.find({}, (err, data)=> {
const notification = JSON.stringify(data.notification)
io.emit('notificationFromDB', notification)
})
})也许你可以详细说明你想做什么,而我可以试着帮你解决你的问题。
更新PST 10/21/2020晚上9:40:
下面的代码将从客户端接收bookComment,然后将其广播给所有连接的客户端:
io.on('connection', (socket) => {
socket.on('bookComment', (comment) => {
//save comment to database here or perform other operations
io.emit('broadcastComment', comment)
})
})如果你还有其他问题,请告诉我。
https://stackoverflow.com/questions/64402265
复制相似问题