2013-03-12 68 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