Question

How do I store data to be used for all the clients in my server? (like the messages of a chat)

Was it helpful?

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)

http://github.com/felixge/node-dirty

node-cache package is currently the best for key value store and it allows synchronous as well as async storage/retrieval/deletion of keys.

npm link

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top