skip to main content
research-article

Design of an Abstraction Layer for Communication with BOSH XMPP Server

Published: 03 April 2015 Publication History

Abstract

XMPP (eXtensible Message and Presence Protocol) is a well structured and constantly evolving protocol that is being used for communication between a client and a server and from the server to one or a group of clients simultaneously. This protocol is being used in typical social networking applications such as Facebook, Google+, Google Hangouts, Twitter, etc. The client to server communication involves constructing long XML body for sending messages. Then the server adds more details in XML body and sends it to the appropriate client or a group of clients. At the receiving side parsing of XML body is more complex. At the client side, constructing the large XML body, which follows the protocol standards, is very difficult for a developer and blows up the development time. The developer not only has to know the protocol inside out but also has to write code that handles various cases. This calls for a simplified implementation of XMPP. The solution to this problem is to propose the design of an abstraction layer, which creates an object with which the developer interacts. The Object in turn handles the construction and parsing of the XML body. This object should also handle various connection issues gracefully and should be able to send the various presence stanzas, which the protocol requires. For using this object the developer imports the library and invokes the object and need not know any intricate details of the protocol. This idea of creating an object, which abstracts the XMP Protocol, is inspired by the MySQL JDBC (Java Database Connector), which is currently being used to connect to MySQL server. The proposed Abstraction Layer was developed using CoffeeScript and it was benchmarked using Chrome Developer Tools CPU Profiler.

References

[1]
Wikipedia, http://en.wikipedia.org/wiki/XMPP
[2]
XSF -- XMPP Standard Foundation, http://xmpp.org/
[3]
BOSH - http://xmpp.org/extensions/xep-0124.html
[4]
XMPP over BOSH - http://xmpp.org/extensions/xep-0206.html
[5]
Professional XMPP Programming with JavaScript and jQuery by Jack Moffitt, published by Wrox, 1 edition (January 7, 2010)
[6]
XMPP: The Definitive Guide by Peter Saint-Andre, Kevin Smith and Remko Tronçon published by O'Reilly Media, April 2009
[7]
Jabber Developer's Handbook by William Wright and Dana Moore Sams Publishing; 1 edition (July 18, 2003)
[8]
Programming Jabber: Extending XML Messaging by DJ Adams, Published by O'Reilly Media; 1st edition (January 14, 2002)
[9]
StropheJS - http://strophe.im/strophejs/
[10]
Blather XMPP - https://github.com/adhearsion/blather
[11]
Ejabberd Server - http://www.process-one.net/en/ejabberd/
[12]
XMPP Carbon Copy - xmpp.org/extensions/xep-0280.html
[13]
Openfire - http://www.igniterealtime.org/projects/openfire/index.jsp

Index Terms

  1. Design of an Abstraction Layer for Communication with BOSH XMPP Server

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGSOFT Software Engineering Notes
    ACM SIGSOFT Software Engineering Notes  Volume 40, Issue 2
    March 2015
    125 pages
    ISSN:0163-5948
    DOI:10.1145/2735399
    Issue’s Table of Contents

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 03 April 2015
    Published in SIGSOFT Volume 40, Issue 2

    Check for updates

    Author Tags

    1. Abstraction Layer
    2. Stanza
    3. XMPP

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 87
      Total Downloads
    • Downloads (Last 12 months)2
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 08 Mar 2025

    Other Metrics

    Citations

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media