2017-03-28 3 views
0

Ich arbeite mit Socket.io auf NodeJS, um Bots für MooMoo.io zu erstellen. Alles scheint gut zu funktionieren, außer die Bots akzeptieren keine Clan-Einladung. HierNodeJS Socket.io-Socket sendet nicht

ist der Teil, der gebrochen wird:

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

Hier ist mein Code:

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

Dies ist ziemlich verwirrend Code. Können Sie genau beschreiben, was Sie erreichen möchten, und bitte machen Sie deutlich, welcher Code der Client-Code ist und welcher Code der Server-Code ist. Außerdem sehe ich, dass du 'io.connect()' alle 3 Sekunden machst (was nicht so aussieht, als würdest du normalerweise socket.io verwenden), aber ich sehe nicht, wie du die Verbindung abbrichst . – jfriend00

+0

@ jfriend00 Hallo. Dies ist alles Client-Code hier. Ich versuche, 5 Verbindungen zu einem moomoo.io Server zu erstellen. Dann versuche ich, diese Bots zu spawnen und einem Stamm beizutreten. –

+0

Nun, ich weiß nicht, was "Spawn and Join A Tribe" bedeutet, also denke ich, ich kann nicht helfen. – jfriend00

Antwort

0

Stellt sich heraus der Server begrenzt eine Verbindung pro Port. Wird durch Verwendung verschiedener Ports behoben.

1

Nach dem Teil, den Sie beschrieben, dass es brach nicht zusätzliche Variablen wie dies passieren sollte:

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

Aber eher sollte es so aussehen;

socket.emit("11", { 
    playerID:a, 
    otherVariable:1 
}); 

, die Sie können mit in der Server-Code Acess:

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

Wenn Sie weitere Einzelheiten über andere Probleme bieten können Sich mit mir versuchen kann Ihnen weiter zu helfen, aber nur, dass diese hervorgehoben emit hat nicht funktioniert und wir haben keinen Backend-Code, um hier zu referenzieren.

Ein weiterer Hinweis, Sie sollten nichts weiterreichen als entweder eine einzelne Variable (die die Dokumentation immer noch nicht verbindet und lieber über ein Objekt weiterleitet) oder ein Objekt. Sie sollten auch socket.once in diesem Zusammenhang nicht verwenden, da es meiner Meinung nach nicht benötigt wird

+0

Hallo, das verbindet sich nicht mit meinem Server, also kenne ich das Backend auch nicht. Danke für das Antworten. –