【问题标题】:send private details to each socket with socket.io使用 socket.io 向每个套接字发送私有详细信息
【发布时间】:2014-07-29 21:49:11
【问题描述】:

我在多人测验中有 2 名玩家。

每个客户都有正确答案和错误答案。

真实答案:socket.true

错误答案:socket.false

我正在逐个增加每个变量的答案,最后,在 5 个答案之后,我正在调用 finishgame 函数。

我想在finishgame 函数中向每个客户发送包含正确答案和错误答案计数的数据。

我该怎么做?

如果我使用socket.emit 或socket.broadcast.to(socket.room).emit,它只会发送一个套接字的数据。

例如:

Send joe -> joe has 3 true , 2false answers;
Send tim -> tim has 1 true , 4 false answers.

但这并没有发生。

【问题讨论】:

    标签: node.js sockets socket.io


    【解决方案1】:

    现在创建一个名为 answers 的新对象,当客户端开始测验时,您将创建一个新的 answers 对象,其中 socket.id 作为索引,如果您需要添加一个真或假答案,您只需编辑/创建一个该answers 对象的属性(例如answers[socket.id]['trueAnswers']++)。现在,当您想向客户端发送正确和错误的答案时,您可以轻松地读取 answers 对象,并将提供的 socket.id 作为索引从您想要数据的客户端读取。

    例子:

            // Create the object
            Answers = new Object();
    
            // Client starts the quiz:
            Answers[socket.id] = {
                trueAnswers: 0,
                falseAnswers: 0
            };
    
            // Client made a correct answer:
            Answers[socket.id].trueAnswers++;
    
            // Send answers data back that is owned by this socket.id
            io.sockets.socket(socket.id).emit(Answers[socket.id]); // Shows 'Object {trueAnswers: 1, falseAnswers: 0}'
    

    编辑:如果您想像您描述的那样通过 forEach 方式发送此内容,我相信这可能是您正在寻找的内容:

    • 请注意,此功能在高于 1.0 的 socket.io 版本中不再可用,建议保留您的 socket.id 数组,以便您可以在需要时对其进行迭代。

          io.sockets.clients().forEach(function (socket) {
                      // This will go trough all connected sockets
          });
      

    【讨论】:

    • 我需要同时将此信息发送给不同的客户端,所以我需要一个函数,如 php 中的 foreach 或 jquery 中的 .each()...
    • 它说 typeError: Object # has no method 'clients' @MDG
    • @monur00006 我明白了,他们从 socket.io 1.0 版本中删除了它!也许现在有一些(更好的?)替代品。可能值得研究。如果我找到任何东西,我会告诉你的。
    • @monur00006 好的,看来您需要使用 connected 命名空间,检查此评论 stackoverflow.com/questions/6563885/… 不确定它是否适用于 forEach,似乎它们在 1.0 中发生了很大变化
    • 事情变得复杂了..我不明白,但谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多