2012-08-13 107 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。