服务器之间同步作业

时间:2018-07-08 19:02:14

标签: node.js socket.io synchronization

我有一个p2p网络,其中有一些使用socket.io的nodejs服务器。每隔10秒,一台随机服务器应执行一项工作,因此服务器必须与谁进行工作进行沟通。

现在我像这样使用logik:

public generate() {     
    setInterval(() => {
        this.randomNumber = Math.round(Math.random() * 1000);
        // console.log("send rand number to all gens:", this.randomNumber);
        this.generatorConnectionsInfo.forEach((gen: IGeneratorConnectionsInfos) => {
            // console.log("send rand", this.randomNumber, "to", gen.peer);
            gen.socket.emit("rand", this.randomNumber);
        });
        this.generating = setTimeout(() => {
            console.log("do the job");                
        }, (8 * 1000);
    }, (10 * 1000);
}

每个服务器都列出其他服务器的编号。如果其中之一比自己的低,则超时将停止:

public checkGeneration(rand: number) {
    console.log("got", rand, "from gen");
    if (rand > this.randomNumber) {
        console.log("generation got canceled");
        clearTimeout(this.generating);
    }       
}

因此,只有数量最多的服务器才能执行此工作。问题是要及时同步它们,以便间隔同时开始。

0 个答案:

没有答案