我在NodeJS上使用socket.io为MooMoo.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 :(得分: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);
});
如果您可以提供有关其他问题的更多详细信息,我可以尝试进一步帮助您,但您只强调发出的信号不起作用,我们没有您的后端代码可供参考。
另一个注意事项,除了单个变量(文档仍未链接并且更喜欢通过对象传递)或对象之外,您不应传递任何内容。您也不应该在此上下文中使用socket.once
,因为我认为不需要
答案 1 :(得分:0)
每个端口的服务器限制一个连接。通过使用不同的端口修复。