NodeJS socket.io套接字不会发出

时间:2017-03-28 16:37:01

标签: node.js sockets websocket socket.io

我在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"
    });
});

2 个答案:

答案 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)

每个端口的服务器限制一个连接。通过使用不同的端口修复。