Id generation: difference between Random.createWithSeeds and randomSeed via ddp

I’ve a question for id generation and method call with randomSeed:

In meteor if I do: Random.createWithSeeds(‘abc’).id()

I always get:
WKrBPwCSbzNHmhacn

But if I connect from and external app, outside of metor with ddp:
self.send({msg: ‘method’, id:id, randomSeed: ‘abc’, method: name, params: params});

I get a different Id. It’s repeatable, but not the same as the one generated by Random. Why?

I cannot understand. Are they using a different generationId algorithm?

Packages I’m using:
On Meteor: https://atmospherejs.com/meteor/random
On external Client (outside Meteor): https://github.com/eddflrs/meteor-ddp + source code of random.js


I'm trying to replicate the latency compensation done by Meteor and minimongo. For instance to create an id on the client and then the same id on the server after calling the method so the client can update the UI without waiting for the server response

In the following docs about DDP it says:


The client may provide a randomSeed JSON value. If provided, this value is used to seed pseudo-random number generation. By using the same seed with the same algorithm, the same pseudo-random values can be generated on the client and the server. In particular, this is used for generating ids for newly created documents. If randomSeed is not provided, then values generated on the server and the client will not be identical.

Currently randomSeed is expected to be a string, and the algorithm by which values are produced from this is not yet documented. It will likely be formally specified in future when we are confident that the complete requirements are known, or when a compatible implementation requires this to be specified.


So, what would be this algorithm?

Source: