4

假设我做了一个 websocket 服务器聊天(node.js + socket.io)。我将如何存储聊天消息,以便当“新”用户加入聊天时,他将看到旧的聊天消息,而不仅仅是在聊天时发送的消息。

数据是否应该存储在服务器的变量中?就像是:

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);
  });
});

对于更复杂的应用程序(例如游戏)来说,这是否是一个可行的解决方案?

谢谢

4

2 回答 2

3

看看 redis ( redis.io ),一个内存数据库(磁盘持久化)。非常快,并且您的数据将在服务器重新启动后保留。它也与 node.js 配合得非常好。

于 2012-08-13T19:47:19.257 回答
2

如果你真的需要为新用户存储聊天记录,我建议将它们存储在 RDBMS 或 NoSQL 存储中。如果您选择 NoSQL,则其中一个选项是Apache CouchDB™</a>(使用 JSON 作为文档的数据库,使用 JavaScript 进行 MapReduce 查询,使用常规 HTTP 作为 API)。这是关于它的免费在线书籍

于 2012-08-13T18:28:56.357 回答