RethinkDB es una base de datos en tiempo real. La diferencia entre RethinkDB y una base de datos tradicional es la capacidad de escuchar los cambios de la base de datos. La escucha continua hace que las actualizaciones en tiempo real sean muy fáciles.
Horizon.js es un marco de trabajo de JavaScript que facilita la interacción con RethinkDB. Puedes instalar Horizon llamando a los siguientes comandos npm:

1$ npm install -g horizon
Con el siguiente comando, se puede iniciar un simple servidor Horizon en modo de desarrollo en el puerto 5000:
1$ hz servir --dev --adherir todo -p 5000
El parámetro –bind all lo hace accesible a través de toda la red. En el modo de desarrollo no hay autenticación de usuario ni regla de seguridad. Para este tutorial no vamos a tratar sobre la autenticación, pero si está interesado en conocerla, por favor, consulte la documentación.
Para iniciar Horizonte en nuestra aplicación necesitaremos usar la función connect()
123456789importarHorizondesde"@horizon/cliente";const horizonte =Horizon();horizonte.onReady((()=>{consola.log("el horizonte está listo");});consola.log("conectar horizonte");horizonte.conectar();
js
Para la aplicación de chat, crearemos dos tablas, una para las salas — esta tabla sólo contiene los nombres de las salas con sus identificaciones — y otra tabla para el ID de la sala, el mensaje en sí, y el nombre de usuario.
Para crear una habitación y mensajes podemos escribir algunas funciones simples:
123456789101112createRoom:roomName=;{horizon("chatRooms").store({ nombre: roomName });};createMessage:(authorName, roomID, message)=>{horizon("messages").store({ author: authorName, date:newDate(), message: message, roomID: roomID });};
js
La función createRoom crea una habitación simple con el nombre de la habitación proporcionada. createMessage crea un mensaje para la habitación.
Lo interesante es cómo podemos escuchar los cambios de la base de datos. Queremos obtener todos los mensajes de una habitación ordenados por su fecha:
1234567horizon("mensajes").findAll({ roomID: roomID }).order("date").watch().subscribe(data=>{///actualizar mensajes aquí});
js
La función en subscribe() se llamará cada vez que se actualicen los datos. En React, podríamos actualizar el estado y tener los datos actualizados casi sin código.
Ahora que podemos crear una sala de chat y crear mensajes, ¿qué queda? En realidad, esto es casi todo el código del backend que necesitaremos para nuestra aplicación.
Ahora empecemos a construir usando MobX y los componentes de reacción para la interfaz de usuario de Onsen.