When user enters a website, user's browser, desktop or mobile application establishes and maintains continuous connection with Push server.
How does Push server works
Usually, Push server uses
WebSocketWebsockets is a technology that opens continuous bidirectional
network connection between user browser and a server.
You can use it for sending a message to the server, to receive a reply
without a http query.
This process will be event-based.
, is used by 95% of modern browsers. And even if WebSocket is not supported by a browser, it uses
Also known as "Pending request queue". Brief diagram is as follows:
1. Request is sent to server
2. Connection is not closed by the server until event is initiated
3. Event is sent in response to the request
4. Client immediately sends new pending request
— continuous long polling. It is
, and awaits for a server response during 40-second period. When response is received or timeout is reached, request is repeated.
Bitrix24 Self-hosted uses its own Push server:
Push server operation procedure
User writes a message on a Bitrix24 account (portal).
Message is received at
NGINX serverNGINX server - powerful event-managed web server architecture
. NGINX server processes and maintains multiple TCP and HTTPS connections, balances the load and executes other important feature, such as HTTP caching and use as the reverse proxy.
Message is sent to PHP-backend portion, saved within it and then transmitted to Push server.
Push server consists of
eight app processes: 6 processes service are inbound connections, 2 processes are responsible for message publishing.
All eight processes of Node.js-application have persistent connection with
RedisRedis - non-relational datastore based on key‑value" pair. It stores not only key-value, but also key-dictionary, key-list, i. e. more complex data structures. Learn more...
. Redis stores all messages, channel statistics and online status.
The message itself contains all data attributes, i. e. author, recipient and etc. One of two processes, responsible for message publication, receives this message, processes and publishes it in Redis.
Redis writes the message and notifies other six processes about a new message with optional forwarding to subscribers.
WebSocket operation uses
open-sourceOpen-source software users have rights for its unrestricted installation, launch, free use, study, distribution and modification, as well as copy and resulting updates propagation
Node.js module named ws.
Each user receives unique channel ID upon connection with Push server for secure operation. It is a random string consisting of 32 characters with added special signature, unique for this specific channel ID. The channels themselves are regularly switched as well as their IDs.
The channel itself is stored at the server for 24 hours, but data is written into it during no longer than 12-hour period. The rest of the time is needed for the user to get previously sent messages. Now, for example, if during an event time a laptop went into "sleep mode" with one single ID, it will "wake up" in the next morning with the same ID and will query a server. After керу message is sent, the server will close the old channel and will create a new channel fo this user.
All Bitrix24 Push server operation modes
For Bitrix24 Self-hosted, it is recommended to use
BitrixVMBitrix Virtual Appliance - is a free-of-charge, off-the-shelf software product, a fully preconfigured and tested virtual server adapted for an immediate use for both Bitrix24 products and any PHP applications. Available versions of Bitrix Virtual Appliance support both Windows and Unix systems. Learn more...
, where everything is already configured. When, for some reasons, BitrixVM cannot be used, configure Push server in the employed virtual environment.
You can download Push server source files from Bitrix Virtual Appliance at this address: /opt/push-server/.
Settings are stored in the file config/config.json .
An example for configuring and launching Push server on a third-party environment is provided in this lesson.