2013-03-12 73 views
0

我正在写智能手机作为蜂鸣器的“最快手指第一”Node.JS应用程序。我打算使用Socket.IO来处理进入应用程序的答案,但不知道最后一轮存储数据以进行比较的最佳方式。最快的手指第一应用程序体系结构 - Redis?

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

希望听起来简洁!

回答

3

你是对的,数组会更快。这取决于你计划支持多少用户以及你如何计划扩展。如果您试图制作“服务”,任何人都可以创建“游戏”,并计划在您的平台上支持成千上万的“游戏”,请与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明确,但我想你明白了吧。

+1

我其实只是实现了数组方法,它工作正常!非常感谢您的回复 - 我认为最初我会选择阵列,然后在Node专业知识增加时开发可扩展版本! – HankHendrix 2013-03-12 20:37:18

+0

太棒了。祝你好运! – Max 2013-03-12 20:40:22