XPUSH is an realtime communication channel server for quickly, easily adding scalable functionality to web and mobile apps.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


visit XPUSH (for version 0.0.23)

We are preparing the documents for version 0.1.x


XPUSH (eXtensional PUSH) is a real-time communication server and a programmable library that supports websocket, GCM and APN. It is suitable for implementing components such as messengers and push system.


You can easily build real-time services with HTML5 Websocket and socket.io, the module on node.js.

But, there are a lot of things to consider on building the real-time services. You need to consider various things such as distributed server configuration in consideration of the users who are rapidly increasing, network traffic processing of large capacity and scale-out strategy.

XPUSH is a server platform that provides such as real-time message communication, message storage, user and device management and Mobile Push Notification. Everyone will be able to install and use after you downloaded. And, XPUSH is a service platform for developing a wide range of real-time services and applications over a single XPUSH server platform.

Without having to directly implement the real-time communication servers, After you install XPUSH platform, try adding a real-time data communication features of your service.

1. Real-time Web Communication Platform

" We help you easily build real-time applications. XPUSH was designed for developers. "

XPUSH consists of real-time communication servers that has been developed as a Web technology. You can build a variety of real-time messaging applications such as your own messenger and chat services

Currently, XPUSH developers are provided Javascript libraries for developing Web services and JAVA libraries for developing JAVA applications and Android applications. We are continually developing additional libraries.

Real-time data communication, while maintaining the network connection between the Client and the Server, can transmit and receive data bidirectionally. If the connection to the server is lost, or even if some servers fails, it guarantees the service availability.

2. Works Everywhere

" At the core of XPUSH is the HTML5 WebSocket protocol, but we also have fallback mechanisms so that XPUSH just works anywhere, anytime. "

XPUSH was developed by node.js to implement high-performance servers. It uses Socket.IO, one of the modules for web-based real-time messaging. And we continue to update the modules to use the latest version.

Socket.IO enables real-time bidirectional event-based communication. It works on every platform, browser or device, focusing equally on reliability and speed.

3. Scalable Web Architecture

" XPUSH was designed to work with commodity servers, an elastic virtualised environments saving you money and headaches. A scalable web application can handle growth – of users or work – without requiring changes to the source code and stoping existed servers "

Real time server platform has to be designed to be able to handle a large amount of network traffic to a sharply rising splice. It has to run a large number of servers for load balancing, needs to designed to be non-disruptive expansion. XPUSH developers designed the Scalable Web Architecture for a long time, and continue to optimize the architecture design.

XPUSH manages the real-time status of the distributed servers through a zookeeper and use Redis to store connection information of the visitors and meta datas in the memory. And XPUSH stores various types of unstructured messages sent or received in MongoDB.

XPUSH server platform run each in the Session server and Channel server. Channel server is responsible to authenticate users, managing user and device information, and assigning distribution server for load balancing. Since relatively Channel servers are easy to increase the load on the network traffic, so that it can be added separately as an expansion only Channel server

1. Prepare

To use the XPUSH is, nodejs, zookeeper, redis is required .

The following is how to install 64bit linux. Please install to suit your environment. If you have already been installed, please skip these preparation steps.

Install nodejs

nodejs installation by referring to Download and unzip the nodejs.

cd $HOME/xpush
wget http://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-x64.tar.gz
tar zvf node-v5.0.0-linux-x64.tar.gz
cd node-v5.0.0-linux-x64
sudo make install

Install zookeeper

Install and run zookeeper with reference Zookeeper installation.

The following is the code to install and run the zookeeper3.4.9.

cd $HOME/xpush
wget http://apache.mirror.cdnetworks.com/zookeeper/stable/zookeeper-3.4.9.tar.gz
tar xvf zookeeper-3.4.9.tar.gz
cp zookeeper-3.4.9/conf/zoo_sample.cfg zookeeper-3.4.9/conf/zoo.cfg
cd zookeeper-3.4.9/bin
./zkServer.sh start

Install redis

Install and run redis with reference Redis installation.

The follow is the code to install and run redis 3.2.6.

cd $HOME/xpush
wget http://download.redis.io/releases/redis-3.2.6.tar.gz
tar xzf redis-3.2.6.tar.gz
cd redis-3.2.6
(daemon : $ nohup src/redis-server & )

2. Run your application with push module

clone xpush repository

git clone https://github.com/xpush/node-xpush.git
cd xpush
npm install

run session server

bin/start --session

run channel server

bin/start --channel

with config.json

bin/start ---config config.json

Config Options

- host : bind ip
- port : bind port