我正在使用 MongoDB 来支持我的多人游戏应用程序。每次有更新时,我都使用 changeStream 通知客户端游戏状态:
games = client.db().collection('games')
games.watch({fullDocument: 'updateLookup'}).on('change', data => {
const game = data.fullDocument
// broadcast game to relevant clients
})
这样做的问题是客户端只会在他们的游戏发生变化时获得更新,但他们还需要一种方法来在最初连接到服务器时获取游戏的当前状态。否则,他们必须等到有人更新游戏状态后才能收到游戏文档。
我想要一些类似 RethingDB 的初始值特性的东西用于他们的 changefeeds。ZeroMQ 还描述了一种类似的模式,他们称之为最后值缓存。
用 MongoDB 实现这种模式的最佳方法是什么?
显而易见的解决方法是让客户端findOne
在最初连接到游戏时执行查询,但随后客户端需要一种方法来解决变更流更新和findOne
结果之间的排序问题。