No Node.js quais tecnologias de armazenamento estão disponíveis para jogos em tempo real

Estou planejando experimentar o desenvolvimento de jogos em tempo real usando html5 e node.js. Eu anteriormente fiz um jogo usando o polling para simular atualizações em tempo real em um jogo. Meu jogo em tempo real usaria AJAX para manter o jogo sincronizado entre vários clientes. Basicamente, sempre que ocorria uma mudança no estado do jogo, eu atualizava um campo last_updated na linha do database em questão. Sempre que um cliente consultava o servidor, ele verificava as atualizações que ocorreram desde a última pesquisa que retornou as atualizações relevantes (fazendo isso comparando o tempo de pesquisa anterior com os campos last_updated).

Na minha nova versão do jogo, onde eu uso o node.js (e web-sockets) eu gostaria de evitar um mecanismo como este, onde eu tenho que fazer buscas continuamente em um database para descobrir se houve atualizações. Eu queria saber se havia methods alternativos para armazenar informações importantes do estado do jogo, sem o uso de um database neste mannor.

Eu realmente gostaria de ser capaz de configurar events para triggersr em todos os clientes quando o estado do jogo é alterado em vez de ter que verificar continuamente as alterações, pois isso salvaria uma grande quantidade de processamento / consulta. Eu realmente não sei se um evento triggersdo em um cliente pode ser enviado para outros clientes também conectados ao meu servidor node.js em execução. Eu sempre usei um database para esse tipo de coisa, mas estou realmente esperando que haja outras alternativas melhores?

Felicidades, Josh

Primeiro de tudo você precisa de algo como Socket.IO para lidar com os websockets (e long-polling, se WS não estiver disponível).

Depois disso, você precisa do Redis ou do ZeroMQ para dimensionar o Socket.IO (por escalonamento quero dizer vários processos, mesmo vários servidores). Você também pode usar o evento _changes do CouchDB para isso. (que pode informar quando uma inserção / atualização ocorreu)

Quanto ao mecanismo de armazenamento, sugiro que você use o MongoDB (muito bom para gravações, é o que você precisa) ou uma combinação de Redis (leitura da memory) e CouchDB (para gravações).

Todos eles possuem bibliotecas Node.js, que você pode conferir na página de módulos https://github.com/joyent/node/wiki/modules ou você pode encontrá-los em seus sites (nos sites dbs).

Você quer um database que possa enviar dados.

Redis e sofá são exemplos disso.

Em vez disso, em seguida, pesquisando os bancos de dados para as alterações (lento como o inferno) você deixa o database dizer “Hey, aconteceu uma mudança”

Então você simplesmente transmite essa mudança para todos os clientes conectados através do socket.io.

Ele quer armazenamento … O MongoDB seria uma boa opção. Se não houver requisitos de transação.