2017-06-25 2 views
0

私はsocket.ioを使って簡単なwebsocketマルチプレイヤーゲームを持っています。node.jsクラスタは完全に異なるインスタンスですか?

私は現在、クラスタを使用しています。新しいワーカーごとに、新しいgameServerオブジェクトをインスタンス化し、gameServer.start()を実行します。

GameServer.prototype.start = function() { 
 
    var express = require("express"); 
 
    var app = express(); 
 
    var server = require('http').Server(app); 
 

 
    /** INIT PORT CONNECTION **/ 
 
    app.get('/', function (req, res) { 
 
     res.sendFile(__dirname + '/web/index.html'); 
 
    }); 
 
    app.use('/', express.static(__dirname + '/web')); 
 
    server.listen(2000); //port number for listening 
 
    console.log('Started Server!');

各ゲームサーバオブジェクトは、独自のPLAYER_LIST、APPLE_LISTを含み、など

それは、各労働者が異なるデータを持っていることを意味していますか?つまり、ユーザーが1人のワーカーに接続すると、完全なデータセットを持たず、完全に異なるサーバー上にいる可能性がありますか?

ありがとうございました。

答えて

0

はいこれらは異なるインスタンスです。 Redisストアなどを使用して、インスタンス間でデータを共有することを検討してください。それは高速で、シンプルプット上で動作し、あなたが入れて、オブジェクトとかなり簡単に

0

をオブジェクトを読み取ることができる基礎を取得はい、あなたは別のデータを持つことになりますので

Redisのがいいです。 Redisを使用してsocket.io-redisパッケージを使用してインスタンスを同期させてみてください。

+0

起動する前に、自分のgameServerインスタンスをredisに変換する必要がありますか? –

+0

はい。それほど難しいことではありません。あなたはパッケージのreadmeを読むことができますか? – galkin

+0

まだ分かりません。私はアダプタが何であるか、部屋が必要な理由を理解していません(部屋は何ですか?)すべてのサーバインスタンスを同期したいのですが、単純なコマンドですか? –

関連する問題