Wednesday, 5 April, 2017 UTC


Summary

Primus.io (www.primus.io) is one of the most known and professional library to real time communication. 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.

Advantages

  • Effortless switching between real-time frameworks by changing one single line of code. No more API rewrites needed when your project requirements change, the framework gets abandoned or simply breaks down.
  • Built-in reconnect, it just works. The reconnect is controlled by a randomised exponential back-off algorithm to reduce server stress.
  • Offline detection, Primus is smart enough to detect when users drop their internet connection (switching WIFI points/cell towers for example) and reconnects when they are back online.
  • Automatically encodes and decodes messages using custom parsers. Can be easily switched for binary encoding for example.
  • A clean, stream-compatible interface for the client and server. You can just stream#pipe data around. In addition to that, the client works on Node.js as well, write once, run it everywhere.
  • Fixes various of bugs in the supported frameworks and additional stability patches to improve real-time communication.
  • Comes with an amazing plugin interface to keep the core library as fast and lean as possible while still allowing the server and the client to be extended.
In below article will be presented consolidation primus.io module with Total.js platform.
Assumptions and Benefits our project:
  • Main objective: integration Total.js with primus.io library for realtime communication
Below presented skeleton/project You can find on my GitHub repository: https://github.com/maxprog/total.js-primus.io.git
Structure of Total.js directories is following:
The most important:
In case of integration Total.js  with primus.io You have to do following steps:
1. Add to config line configuration allow-websocket: false to disable web socket lib
2. Implement integration primus.io library with total.js  in main total.js file server (e.g. debug.js, release.js or in any defined by You file). Logic of creation in case of primary.io is a bit different to socket.io – please take a look on ‘room’ functionality
3. Place in index.html javascript primus.io reference responsible for communication client side with node.js server
<script src=”/primus/primus.io.js”></script>
4. Implement javascript functionality responsible for communication by primus.io on client side (index.html or layout.html)
4. Bind functions of primus.io javascript with html tags to handle events for incoming and sending message
The last operation it is installation process all necessary modules and run total.js server:
      1. Install the total.js  in project directory
        npm install 
        
      2. Start the server from the root directory of project
        node debug.js
        
      3. You should see information that total.js was started
Visit http://localhost:8000, open two or more browsers and start work on messenger