Question
How do I store data to be used for all the clients in my server? (like the messages of a chat)
Solution
The server that node.js allows you to build, is an application server, which means that state is preserved, between request, on the server side. The following snippet demonstrates this:
var sys = require('sys'),
http = require('http');
var number = 0;
http.createServer(function (req, res) {
console.log(req.method, req.url);
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<h1>Number is: ' + number + '</h1>');
res.end();
number++;
}).listen(8000);
sys.puts('Server running at http://127.0.0.1:8000/');
OTHER TIPS
If you want more features have a look at redis-node-client
Or use a native node storage mechanism (written in node.js)
node-cache package is currently the best for key value store and it allows synchronous as well as async storage/retrieval/deletion of keys.
I wrote Bx for this purpose; it gives you a simple in-memory cache with:
- Key-value storage
- Optional expiration on any stored data
- Support for schemas using JSON-schema
Although I'm plugging my own repository here, I can assure you it works well and it's been used in production at my own company, Onshape for over a year without issues. At the end of the day it's a pretty simple tool; not much to mess up here.
However, if you're storing data that's meant to be permanent you're going to want a database such as MongoDB (w/ Mongoose), MySQL, etc. rather than a cache like Bx or Redis.