流星随机包vs randomSeed

时间:2016-03-25 09:58:03

标签: javascript meteor random cryptography ddp

我试图复制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的源代码

1 个答案:

答案 0 :(得分:0)

这可能不是一个完整的答案(我仍然在寻找),但你使用Random.createWithSeeds的方式应该是:

> let generator = Random.createWithSeeds('abc')
> generator.id()
'WKrBPwCSbzNHmhacn'
> generator.id()
'h6iLWkdEfZ7wXWpPQ'

也许编辑可能会澄清createWithSeeds('abc')应该多次返回您调用.id()的对象。我从来没有尝试过从另一个ddp客户端传递种子,我会在你做的时候告诉你