XMPP Over WebSocket
X.O.W.S (or XoWS) stands for "XMPP Over WebSocket" and is a Javascript XMPP web client that use the WebSocket protocole.
The main idea of the project is initially to create a XMPP client with the following caracteristics:
- Free from thirdparty library, lightweight and quick to load.
- Performant with low memory footprint.
- Allowing easy customisation and creation of graphical theme / web interface.
- Implementing features closer to modern chat clients like a one with name beginning by "D".
The application is written in plain Javascript, in old-fashion (C-style) using many fcallbacks functions. The main code avoids as most as possible Javascript's false friends like the "this" keyword, anonymous functions, modern syntactic sugar and confusing (to me) paradigms such as Promises, "sync" and "async" mechanism.
- Probably a lot of small bugs
- Application main options via main screen (such as language selection)
- A good Tutorial for deployment
- Some code refactoring (especially on the GUI side)
- A proper loading handling to avoid graphicals glitchs
The following screenshots are not up-to-date and do not reflect exactly the current stage of GUI.
The application is divided into several "API Modules" with one file per "module", each "module" is dedicated to a specific aspect of the program and have a dedicated function name prefix except the "base API". Here is module list and their quick description:
xows_base.jsBase API: Base constants and functions such as string/bytes manipulation and algorithmsxows_xml.jsXML Module: XML parsing, manipulation and building functionsxows_sasl.jsSALS Module: SASL mechanism implementationxows_sck.jsWebSocket Module: WebSocket interface functionsxows_xmp.jsXMPP Module: "Low-Level" XMPP protocol client interface
xows_cach.jsCaching Module: Data caching and Browser local storage management functionsxows_load.jsAgnostic loader: Small toolset for loading tasks management and triggeringxows_cli.jsClient Module: "High-level" XMPP client interfacexows_wrtc.jsWebRTC Module: WebRTC interface implementation
xows_l10n.jsl10n Module: Localization mechanisms and translation functionsxows_tpl.jsHTML Templates Module: HTML templates download and parsing mechanismxows_doc.jsDOM Managment Module: Browser DOM document management and GUI base toolsxows_gui.jsGUI Module: GUI related functions and mechanismsxows_init.jsInit Module: The main "Public" API and library initialization functions