我正在写一个“最快的手指优先”的Node.JS应用,使用智能手机作为蜂鸣器。我打算使用Socket.IO来处理进入应用程序的答案,但不知道存储数据以便在回合结束时进行比较的最佳方式是什么。
我最初的想法是将每个传入套接字事件的应答数据插入到Redis中,因为它是基于RAM的,我的假设是它会很快。但是,按顺序将每个答案放入一个数组中是不是更好?在传入的套接字事件期间,这种情况会持续下去吗?
希望这听起来很简洁!
发布于 2013-03-13 03:44:52
你说数组会更快,这是正确的。这取决于您计划支持多少用户,以及您计划如何扩展。如果你想做一个任何人都可以创建“游戏”的“服务”,并且你计划在你的平台上支持数十万个“游戏”,那就使用Redis吧,因为你可能需要扩展你的web层,一个web服务器上的嗡嗡声不会出现在另一个web服务器上。
但是,如果你这样做是一次性的,是为了一次支持一个游戏,甚至可能是从通过wifi连接到你的笔记本电脑的朋友那里(尽管互联网上的一个小型Heroku服务器也可以工作),那么我会使用一个数组。与外部数据库(即使是像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不是很熟悉,但是我想你已经明白了。
https://stackoverflow.com/questions/15370526
复制相似问题