0

我正在使用智能手机作为蜂鸣器编写“最快的手指优先”Node.JS 应用程序。我打算使用 Socket.IO 来处理进入应用程序的答案,但不知道在回合结束时存储数据以进行比较的最佳方式是什么。

我最初的想法是将每个传入套接字事件的答案数据插入到 Redis 中,因为它是基于 RAM 的,我的假设是它会很快。但是,将每个答案依次推送到数组中会更好吗?这会在传入的套接字事件期间持续存在吗?

希望听起来简洁!

4

1 回答 1

3

你说得对,数组会更快。这取决于您计划支持多少用户以及您计划如何扩展。如果您正在尝试提供任何人都可以创建“游戏”的“服务”,并且您计划在您的平台上支持数十万个“游戏”,请使用 Redis,因为您可能需要扩展您的 Web 层并关注一个 Web 服务器不会显示在另一个 Web 服务器上。

但是,如果您这样做是一次性的,一次支持一个游戏,甚至可能来自通过 wifi 连接到您的笔记本电脑的朋友(尽管 Internet 上的小型 Heroku 服务器也可以正常工作),那么我d 带一个数组。与外部数据库(甚至像 Redis 一样快的数据库)通信会增加复杂性。Node.js 是事件和单线程的,这意味着您不必担心竞争条件。你可以写

var firstPresser;
socket.on('press', function (presser) {
    if (!firstPresser) {
        firstPresser = presser;
        // return "You pressed first"
    } else {
        // return "You didn't press first"
    }
});

请原谅我的伪代码,我对 socket.io 并不特别熟悉,但我想你明白了。

于 2013-03-12T19:44:51.907 回答