Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向客户发送其他玩家的分数?Socket.io_Javascript_Jquery_Socket.io - Fatal编程技术网

Javascript 向客户发送其他玩家的分数?Socket.io

Javascript 向客户发送其他玩家的分数?Socket.io,javascript,jquery,socket.io,Javascript,Jquery,Socket.io,我的情况是,我不确定如何向其他客户发送其竞争对手的当前分数 例如: 当玩家1点击时,我希望它告诉玩家2客户端玩家1的分数 userOne = userIDs[0]; userTwo = userIDs[1]; socket.on("player one", function(data) { console.log(data.pScore + "THIS IS WORKING"); score = data.pScore;

我的情况是,我不确定如何向其他客户发送其竞争对手的当前分数

例如:

当玩家1点击时,我希望它告诉玩家2客户端玩家1的分数

    userOne = userIDs[0];
    userTwo = userIDs[1];

    socket.on("player one", function(data) {
        console.log(data.pScore + "THIS IS WORKING");
        score = data.pScore;
        console.log("THIS IS PLAYER TWO" + data.pNameTwo);
        if (isInArray(data.pNameTwo,allUsers)) {
            console.log(users[socket.id].username);
        }
        socket.emit("player ones score", {p1Score: score});
    });

    socket.on("player two", function(data) {
        console.log(data.pScore + "THIS IS WORKING");
        score = data.pScore;
        socket.emit("player twos score", {p2Score: score});
    }); 

我打算只向特定的用户ID发送分数。但我不确定这样做的最佳方式。

最好的方式是使用一个包含所有连接的对象,该对象在用户每次连接/断开连接时都会更新。我看到您已经有了一个用户ID列表,其中包含了他们的ID,所以,如果您的对象名为userConnections,那么您的代码应该是

userOne = userIDs[0];
userTwo = userIDs[1];

socket.on("player one", function(data) {
    console.log(data.pScore + "THIS IS WORKING");
    score = data.pScore;
    console.log("THIS IS PLAYER TWO" + data.pNameTwo);
    if (isInArray(data.pNameTwo,allUsers)) {
        console.log(users[socket.id].username);
    }
    userConnections[userTwo].emit("player ones score", {p1Score: score});
});

socket.on("player two", function(data) {
    console.log(data.pScore + "THIS IS WORKING");
    score = data.pScore;
    userConnections[userOne].emit("player twos score", {p2Score: score});
}); 
更新

好的,我还将演示如何初始化和管理用户连接。它是这样的(我只是猜测代码中的一些变量是如何调用的,所以我可能会弄错一些名称)


制作一个游戏对象,让两个用户都能看到其他玩家的链接。一个用户怎么做?userConnections调用的是什么?因为我尝试了你那里的东西,但说无法读取Undeinedi的emit属性。当我可以运行一个全局emit io.sockets.emit并在那里获得值时,我太傻了。但是谢谢你启发我,因为这引导我走上了正确的道路。@factor_za哦,我明白了。我很高兴你找到了这样做的方法。我真是个慢性子——我已经扩展了我的答案。不管怎样,我不确定我的答案是如何起作用的(因为它不是很接近那个),但不客气。哈哈,它让我思考并寻找解决方案。这是我的第一个socket.io项目。所以现在它非常丑陋!再次感谢。
var userConnections = {}

io.on('connection', function(socket) {
    userConnections[socket.id] = socket;

    //socket.on('player one', function(data) { ... } );
    //socket.on('player two', function(data) { ... } );

    socket.on('disconnect') {
        delete userConnections[socket.id];
    }
}