我试图复制Meteor和minimongo完成的延迟补偿。例如,在客户端上创建一个id,然后在调用该方法后在服务器上创建相同的id,这样客户端就可以更新UI而无需等待服务器响应。
为此,我需要在客户端和服务器上生成相同的Id。
所以,如果我这样做,流星: Random.createWithSeeds(' abc')。id()
我总是得到: WKrBPwCSbzNHmhacn
但是,如果我使用ddp客户端连接外部应用程序,在metor之外: self.send({msg:'方法',id:id,randomSeed:' abc',方法:名称,参数:params});
我得到了不同的身份证明。它是可重复的,但与Random生成的不同。为什么呢?
我无法理解。他们使用不同的generationId算法吗?
我使用的套餐: 在流星上:https://atmospherejs.com/meteor/random 在外部客户端(Meteor外部):https://github.com/eddflrs/meteor-ddp + random.js的源代码
答案 0 :(得分:0)
这可能不是一个完整的答案(我仍然在寻找),但你使用Random.createWithSeeds的方式应该是:
> let generator = Random.createWithSeeds('abc')
> generator.id()
'WKrBPwCSbzNHmhacn'
> generator.id()
'h6iLWkdEfZ7wXWpPQ'
也许编辑可能会澄清createWithSeeds('abc')
应该多次返回您调用.id()
的对象。我从来没有尝试过从另一个ddp客户端传递种子,我会在你做的时候告诉你