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服务器,存储数据的主要内容,如果未能解决你的问题,请参考以下文章