2012-08-13 135 views
4

可以說我做了一個websocket服務器聊天(node.js + socket.io)。我將如何存儲聊天消息,以便當「新」用戶加入聊天時,他將看到舊聊天消息,而不僅僅是在聊天中他已經發送的聊天消息。websocket服務器,存儲數據

數據應該存儲在服務器的變量中嗎?喜歡的東西:

var io = require('socket.io').listen(80); 

var saveData = { }; 

io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

難道是一個更復雜的應用可行soultion,例如像遊戲?

感謝

回答

2

如果你真的需要保存聊天記錄新用戶,我建議那些存儲在關係數據庫或NoSQL的存儲。如果您選擇NoSQL,則其中一個選項是Apache CouchDB™(對文檔使用JSON的數據庫,對MapReduce查詢使用JavaScript的數據庫以及對API使用常規HTTP)。這裏有關於它的免費在線book

+0

這將是最好的主意。如果您的服務由於某種原因而崩潰,或者您要手動重新啓動,則還允許您存儲數據。存儲在這些數據庫中可以爲您提供持久存儲。 – travis 2012-08-13 18:47:29

+0

感謝您的回答。但讓我們以「browserquest」(https://github.com/mozilla/BrowserQuest/)爲例。看起來像他們在服務器上使用變量而不是數據庫?或者我錯過了什麼? – Johan 2012-08-13 18:48:43

2

看看redis(redis.io),這是一個內存數據庫(磁盤持久化)。真正快速,並且您的數據將在服務器重啓過程中持續存在。它也非常適合node.js。