hapi-socketio-redis-chat-example - :speech_balloon: Real-time Chat using Hapi

  •        26

Node.js Chat Apps are practically the "Hello World" of real-time apps. If you Google for "node.js chat example" you will see thousands of results! But ... 90% of the examples use Express.js, 95% use MongoDB to store data/messages and 100% have zero tests. So, this example is for the the people who prefer to have examples that are fully explained (including tests). As with all our examples we have a suite of tests.

https://github.com/dwyl/hapi-socketio-redis-chat-example#readme

Dependencies:

elm-test : ^0.18.6
hapi : ^16.1.1
hapi-error : ^1.8.0
inert : ^4.2.0
redis-connection : ^5.0.0
socket.io : ^1.7.3
socket.io-client : ^2.0.3

Tags
Implementation
License
Platform

   




Related Projects

learn-hapi - :sunny: Learn to use Hapi

  •    HTML

Happiness is learning how to use the Hapi.js (Node.js) web framework to build reliable/scalable apps faster. Hapi is the framework for rapidly building RESTful & Real-Time web applications and services with Node.js. Whether you are building a very simple API for your website/mobile app or a large scale, cache heavy, secure e-commerce website, hapi has you covered. Hapi will help get your server developed quickly with its wide range of configurable options.

chat

  •    Javascript

A Real Time Chat Application built using Node.js, Express, Mongoose, Socket.io, Passport, & Redis. Make sure you have Node.js and npm installed.

emitter - High performance, distributed and low latency publish-subscribe platform.

  •    Go

Emitter is a free open source real-time messaging service that connects all devices. This publish-subscribe messaging API is built for speed and security. Emitter is a real-time communication service for connecting online devices. Infrastructure and APIs for IoT, gaming, apps and real-time web. At its core, emitter.io is a distributed, scalable and fault-tolerant publish-subscribe messaging platform based on MQTT protocol and featuring message storage.

Beaver - 💨A real time messaging server to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps

  •    Go

A Real Time Messaging Server. Beaver is a real-time messaging server. With beaver you can easily build scalable in-app notifications, realtime graphs, multiplayer games, chat applications, geotracking and more in web applications and mobile apps.

Darkwire.io - End-to-end encrypted instant web chat

  •    Javascript

Simple encrypted web chat. Powered by socket.io, the web cryptography API. This project is an example of how client side encryption works and how you can integrate it as a chat service. Darkwire server is a Node.js application that requires redis. The Darkwire.io web client is written in JavaScript with React JS and Redux. It uses a combination of asymmetric encryption (RSA-OAEP), symmetric session keys (AES-CBC) and signing keys (HMAC) for security.


thoonk.js - Persistent (and fast!) push feeds, queues, and jobs leveraging Redis

  •    Javascript

Thoonk is a persistent (and fast!) framework for Redis backed live data and objects, such as push feeds, queues, and jobs. Thoonk lets you create a Model whose methods are mapped to Redis Lua scripts, and can listen for and emit events using Redis pubsub channels.

hapi-auth-jwt2 - :lock: Secure Hapi

  •    Javascript

This node.js module (Hapi plugin) lets you use JSON Web Tokens (JWTs) for authentication in your Hapi.js web application.

redis-oplog - Redis Oplog implementation to fully replace MongoDB Oplog in Meteor

  •    Javascript

A full re-implementation of the Meteor's MongoDB oplog tailing. This time, reactivity is controlled by the app, opening a new world into building reactive applications, highly scalable chat apps, games, and added reactivity for non-persistent data. Incrementally adoptable & works with your current Meteor project.

redispubsub - A Node

  •    Javascript

This project is now updated to use Node 4.x (not backward compatible). In addition, it uses all latest modules of Express, Socket.io etc. One of the most common things people build on Node.js are real-time apps like chat apps, social networking apps etc. There are plenty of examples showing how to build such apps on the web, but it’s hard to find an example that shows how to deal with real-time apps that are scaled and are running with multiple instances. You will need to deal with issues like sticky sessions, scale-up/down, instance crash/restart, and more for apps that will scale. This post will show you how to manage these scaling requirements.

primus - :zap: Primus, the creator god of the transformers & an abstraction layer for real-time to prevent module lock-in

  •    Javascript

Primus, the creator god of transformers but now also known as universal wrapper for real-time frameworks. There are a lot of real-time frameworks available for Node.js and they all have different opinions on how real-time should be done. Primus provides a common low level interface to communicate in real-time using various real-time frameworks.If you deploy your application behind a reverse proxy (Nginx, HAProxy, etc.) you might need to add WebSocket specific settings to its configuration files. If you intend to use WebSockets, please ensure that these settings have been added. There are some example configuration files available in the observing/balancerbattle repository.

Redisson - Redis based In-Memory Data Grid for Java

  •    Java

Redisson - Distributed and Scalable Java data structures (Set, SortedSet, Map, ConcurrentMap, List, Queue, Deque, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, HyperLogLog) on top of Redis server. Advanced redis java client. It supports over 28+ data structures and services, Synchronous / asynchronous / reactive interfaces and lot more.

HAPI - A spec for Humanized web APIs, aka HAPI

  •    Javascript

Question: Why should an API be humanized? Answer: Machines consume APIs, but people still write the software that run on those machines. HAPI addresses this problem by reducing all operations to simple requests that can be initiated and read by any standard web browser. API calls are reduced from a series of instructions into a single, self-documenting URL that can be clicked from an Email, chat, blog post (or anything else) with results that are simple enough to be read back over the phone in plain english.

Scribe - Real time log aggregation used in Facebook

  •    C++

Scribe is a server for aggregating log data that's streamed in real time from clients. It is designed to be scalable and reliable. It is developed and maintained by Facebook. It is designed to scale to a very large number of nodes and be robust to network and node failures. There is a scribe server running on every node in the system, configured to aggregate messages and send them to a central scribe server (or servers) in larger groups.

Go Redis - Type-safe Redis client for Golang

  •    Go

Redis client for Golang. It supports Publish /Subscribe. Transactions. Pipeline and TxPipeline. Scripting. Timeouts. Redis Sentinel. Redis Cluster. Cluster of Redis Servers without using cluster mode and Redis Sentinel. Ring. Instrumentation. Cache friendly. Rate limiting. Distributed Locks.

Redisson - Redis based In-Memory Data Grid for Java

  •    Java

Redisson - distributed Java objects and services (Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Executor service, Tomcat Session Manager, Scheduler service, JCache API) on top of Redis server. Rich Redis client.

socket.io-php-emitter - A PHP implementation of socket.io-emitter

  •    PHP

A PHP implementation of socket.io-emitter. This project requires a Redis client for PHP. If you dont have the PECL Redis installed, the emitter will default to using TinyRedisClient. You can, however, pass in any Redis client that supports a publish method.

hoodie-server - :dog: Hapi plugin for Hoodie’s server core module

  •    Javascript

Have a look at the Hoodie project's contribution guidelines. If you want to hang out you can join our Hoodie Community Chat.

ejabberd - Robust, Scalable and Extensible XMPP Server

  •    Erlang

ejabberd is a distributed, fault-tolerant technology that allows the creation of large-scale instant messaging applications. The server can reliably support thousands of simultaneous users on a single node and has been designed to provide exceptional standards of fault tolerance. As an open source technology, based on industry-standards, ejabberd can be used to build bespoke solutions very cost effectively.

hapi-ninja - Boilerplate Hapi server example. Node.js, Hapi, and Swig.

  •    Javascript

Create a base boilerplate example showing how easy it is to get started with Hapi as a web server. CSS Framework - None. Choose your own CSS preprocessor and CSS framework.

Redigo - Go client for Redis

  •    Go

Redigo is a Go client for the Redis database. The Go distribution is Redigo's only dependency. It is a Print-like API with support for all Redis commands. It supports Pipelining, Publish / Subscribe, Connection pooling.