连接事件不为第二个客户端触发

时间:2015-08-23 07:40:00

标签: javascript node.js websocket socket.io

编辑:我通过将localhost替换为我的公共IP,然后将端口转发端口4200替换到我的计算机来实现它。

编辑2:在某些时候修复它。更新socket.io修复了一下。我现在设置了一个计时器,如果它自己没有被调用,在5秒后运行onConnect(糟糕的黑客,我知道,但是唯一可以确保它被调用的方法)

编辑3:不,我认为是因为我在onConnect有机会运行之前正在运行相位器状态。我现在改变了它,以便从onConnect中调用相位器状态。

我正在开发一款小型多人平台游戏,但遇到了网络问题。第一个连接的客户端工作得很好:它连接,创建一个播放器,更新服务器等。然而,第二个客户端根据服务器连接,但从不调用本地onConnect函数。而且奇怪的是,它偶尔决定它想要正常工作 - 连接两个客户的事件火灾,我有两个参与者。

客户端

var socket = io.connect("http://localhost:4200");
...
function setEventHandlers(localPlayer){
    player = localPlayer;

    console.log("Event handlers set");

    socket.on("connect", onConnect);
    socket.on("disconnect", onDisconnect);
    socket.on("new player", onNewPlayer);
    socket.on("move player", onMovePlayer);
    socket.on("remove player", onRemovePlayer);
}

function onConnect(){
    console.log("Connected to server");

    // Send local player to server
    socket.emit("new player", player.getSendableObject());
}

服务器

socket = io.listen(PORT);
...
function setEventHandlers(){
    socket.sockets.on("connection", onConnect);
}

function onConnect(client){
    util.log("Client connected: " + client.id);

    client.on("disconnect", onDisconnect);
    client.on("new player", onNewPlayer);
    client.on("move player", onMovePlayer);
}

0 个答案:

没有答案