【问题标题】:websocket server, storing the datawebsocket服务器,存储数据
【发布时间】:2012-08-10 00:27:08
【问题描述】:

假设我做了一个 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);
  });
});

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

谢谢

【问题讨论】:

    标签: javascript html node.js websocket socket.io


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这将是最好的主意。如果您的服务因任何原因崩溃,或者您手动重新启动,这也允许您存储数据。存储在诸如此类的数据库中可以为您提供持久存储。
      • 感谢您的回答。但让我们以游戏“browserquest”(github.com/mozilla/BrowserQuest)为例。在我看来,他们在服务器中使用变量而不是数据库?还是我错过了什么?
      猜你喜欢
      • 1970-01-01
      • 2021-07-04
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2012-02-12
      相关资源
      最近更新 更多