2016-03-25 138 views
1

我试图复制流星和minimongo完成的延迟补偿。例如,要在客户端上创建一个id,然后在调用该方法之后在服务器上创建相同的id,以便客户端可以在不等待服务器响应的情况下更新UI。流星随机包vs randomSeed

为此,我需要在客户端和服务器上生成相同的标识。

所以,流星,如果我做的:Random.createWithSeeds( 'ABC')的ID()

我总是得到: WKrBPwCSbzNHmhacn

但是,如果我从外部应用程序连接,在使用ddp客户端的metor之外: self.send({msg:'method',id:id,randomSeed:'abc',method:name,params:params});

我得到一个不同的Id。它是可重复的,但与Random生成的不一样。为什么?

我听不懂。他们是否使用不同的generationId算法?我使用

套餐: 在流星:https://atmospherejs.com/meteor/random 在外部客户端(流星外):random.js

回答

0

https://github.com/eddflrs/meteor-ddp +源代码,这可能不是一个完整的答案(我还在找过),但你使用Random.createWithSeeds的方式应为:

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

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