Design of an Abstraction Layer for Communication with BOSH XMPP Server
Pages 1 - 4
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
- Design of an Abstraction Layer for Communication with BOSH XMPP Server
Recommendations
Streaming XML with Jabber/XMPP
Jabber is an open alternative to closed instant messaging (IM) and presence services.At its core is the Extensible Messaging and Presence Protocol (XMPP), which defines how to stream XML content and is being used to build not only a large open IM ...
Comments
Information & Contributors
Information
Published In

Copyright © 2015 Authors.
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
Qualifiers
- Research-article
Contributors
Other Metrics
Bibliometrics & Citations
Bibliometrics
Article Metrics
- 0Total Citations
- 87Total 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
Check if you have access through your login credentials or your institution to get full access on this article.
Sign in