2017-03-28 17 views
0

NodeJSでsocket.ioを使用してMooMoo.ioのボットを作成しています。ボットが一族招待状を受け入れない限り、すべてがうまくいくようです。ここでNodeJS socket.ioソケットが出ない

が壊れている部分である。

socket.emit("11", a, 1); // a = player ID 

ここに私のコードは次のとおりです。

const io = require("socket.io-client"); 
var socket = io.connect("http://52.39.43.139:" + (5006) + '', { 
    reconnection: false, 
    query: "man=1" 
}); 
var n = 0; 

function spawn(i) { 
    n++; 
    if (n >= 10) return null; 
    socket = io.connect("http://52.39.43.139:" + (5000 + i % 11) + '', { 
     reconnection: false, 
     query: "man=1" 
    }); 
    socket.once("connect",() => { 
     socket.emit("1", {name: "ME"}); // spawn 
     socket.emit("10", "ME"); // request to join clan 
    }); 
} 
socket.once("connect",() => { 
    socket.emit("1", { 
     name: "ME" 
    }); // spawn 
    socket.emit("8", "ME"); // create clan 
    console.log("Clan created"); 
}); 

team = []; 

var i = 0; 
setInterval(() => spawn(i), 3000); 
socket.on("an", (a, name) => { // player requests to join clan event 
    socket.emit("11", a, 1); // accept invite 
    console.log(`${name} successfully joined :)`); 
    team.push(a); 
    console.log(team); 
}); 
socket.on("ad", (a) => { // player leaves clan event 
    for (var c = team.length - 1; c >= 0; c--) 
     if (team[c].sid == a) { 
      team.splice(c, 1); 
      console.log(team[c].name + ' has left'); 
     } 
    console.log(team); 
}); 
socket.on("11",() => { // respawn event 
    console.log("I have died, respawning...") 
    socket.emit("1", { // spawn event 
     name: "ME" 
    }); 
}); 
+0

これはかなり混乱するコードです。あなたが達成しようとしていることを正確に記述して、どのコードがクライアントコードであり、どのコードがサーバーコードであるかを非常に明確にしてください。また、私はあなたが 'io.connect()'を3秒ごとに実行しているのを見ています(これは通常socket.ioをどのように使用するかのようには見えません)。しかし、切断しているとは思わないので、 。 – jfriend00

+0

@ jfriend00こんにちは。これはすべてここのクライアントコードです。私はmoomoo.ioサーバーへの5つの接続を作成しようとしています。それから私はそれらのボットを産んで部族に参加させようとしています。 –

+0

さて、私は "部族に出て参加する"という意味がわからないので、私は助けないと思います。 – jfriend00

答えて

0

ポートごとに1つのサーバー接続を有効にします。異なるポートを使用することで修正されました。

1

あなたは、このような余分な変数渡すべきではありません破っされているものとして説明した部分によると:

socket.emit("11", a, 1); // a = player ID 

しかし、これは次のようになります。

あなたが使用して、サーバコードにアセスでき
socket.emit("11", { 
    playerID:a, 
    otherVariable:1 
}); 

:あなたが他の問題、あなたは、私はさらにあなたを助けるために試みることができることについてより詳細な情報を提供できる場合

socket.on('11', function(data){ 
    console.log(data.playerID); 
    console.log(data.otherVariable); 
}); 

をしていますが、それだけでいることを強調しemitは機能しませんでした。ここで参照するバックエンドコードはありません。

もう1つの注意点は、ドキュメントがまだリンクされておらず、オブジェクト経由で渡すことを好む単一の変数またはオブジェクトだけを渡すべきではないということです。あなたはまた、私の意見では必要でないのでsocket.onceを使用すべきではありません。

+0

こんにちは、これは私のサーバーに接続していないので、バックエンドもわかりません。お返事ありがとうございます。 –

関連する問題