websocket服务器,存储数据

Posted

技术标签:

【中文标题】websocket服务器,存储数据【英文标题】:websocket server, storing the data 【发布时间】: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);
  );
);

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

谢谢

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

这将是最好的主意。如果您的服务因任何原因崩溃,或者您手动重新启动,这也允许您存储数据。存储在诸如此类的数据库中可以为您提供持久存储。 感谢您的回答。但让我们以游戏“browserquest”(github.com/mozilla/BrowserQuest)为例。在我看来,他们在服务器中使用变量而不是数据库?还是我错过了什么?

以上是关于websocket服务器,存储数据的主要内容,如果未能解决你的问题,请参考以下文章

基于 Websockets 的存储后端

跨组件和存储使用的单个 websocket 连接

临时从websocket回调存储数据

python的websocket在哪里存储它接收到的数据

如何使用棘轮 websockets 将数据发送到服务器 onload?

js进阶六:JSON,离线存储,WebSocket,画布,音频/视频