Swiften is a robust, high-quality, standards-compliant, cross-platform, and performant C++ library for implementing XMPP applications. A native Java (no JNI) port of the Swiften C++ library for implementing XMPP applications, called Stroke, is also available.


Swiften and Stroke are the obvious choices when looking for an XMPP library. Isode's deep knowledge of XMPP standards and extensive experience means that you don't have to spend time reading the specs and determining correct behaviour.

Swiften and Stroke are used and trusted by a wide range of developers, both commercial and open-source, for a wide variety of different applications on desktop and mobile devices.

Licensing

By default Swiften and Stroke are licensed under the GNU General Public License. Isode can provide commercial licenses and commercial support contracts, contact us for more information.

Conformance

RFC 6120 Extensible Messaging and Presence Protocol (XMPP): Core. P. Saint-Andre, March 2011
RFC 6121 Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence. P. Saint-Andre, March 2011
RFC 6122 Extensible Messaging and Presence Protocol (XMPP): Address Format. P. Saint-Andre, March 2011
XEP 0004 Data Forms. J. Hildebrand, J. Miller, R. Eatmon, T. Muldowney, P. Saint-Andre, August 2007
XEP 0012 Last Activity. J. Miller, T. Muldowney, P. Saint-Andre, November 2008
XEP 0030 Service Discovery. J. Hildebrand, P. Millard, R. Eatmon, P. Saint-Andre, February 2007
XEP 0045 Multi-User Chat. P. Saint-Andre, July 2008
XEP 0048 Bookmarks over XEP-0049
XEP 0049 Private XML Storage. P. Saint-Andre, R. Davies March 2004
XEP 0050 Ad Hoc Commands. M. Miller, June 2005
XEP 0055 Jabber Search, P. Saint-Andre, Sept 2009
XEP 0065 SOCKS5 Bytestreams, D. Smith, M. Miller, P. Saint-Andre, J. Karneges, Sept 2009
XEP 0085 Chat State Notifications, P. Saint-Andre, D. Smith, Sept 2009
XEP 0092 Software Version. P. Saint-Andre February 2007
XEP 0106 JID Escaping, J. Hildebrand, P. Saint-Andre, July, 2016
XEP 0115 Entity Capabilities, J. Hildebrand, P. Saint-Andre, R. Troncon, J. Konieczny, Oct 2016
XEP 0124 Bidirectional-streams Over Synchronous HTTP (BOSH), I. Paterson, D. Smith, P. Saint-Andre, J. Moffitt, L. Stout, W. Tilanus, November 2016
XEP 0138 Stream Compression. J. Hildebrand, P. Saint-Andre September 2007
XEP 0144 Roster Item Exchange, P. Saint-Andre, Nov 2017
XEP 0153 vCard-Based Avatars, P. Saint-Andre, Feb 2018
XEP 0154 User Profile, P. Saint-Andre, April 2008
XEP 0172 User Nickname, P. Saint-Andre, V. Mercier, March 2012
XEP 0184 Message Delivery Receipts, P. Saint-Andre, J. Hildebrand, March 2011
XEP 0191 Blocking Command, P. Saint-Andre, March 2013
XEP 0198 Stream Management. J. Karneges, June 2011
XEP 0206 XMPP over BOSH. I. Paterson, P. Saint-Andre, L. Stout, W. Tilanus, April 2014
XEP 0234 Jingle File Transfer, P. Saint-Andre, L. Stout, Nov 2018
XEP 0237 Roster Versioning. Peter Saint-Andre, Dave Cridland, March 2010
XEP 0256 Last Activity in Presence, P. Saint-Andre, Sept 2009
XEP 0258 Security Labels in XMPP. K. Zeilenga, March 2009
XEP 0260 Jingle SOCKS5 Bytestreams Transport Method, P. Saint-Andre, D. Meyer, J. Karneges, M. Lundblad, T. Markmann, K. Hartke, May 2018
XEP 0261 Jingle In-Band Bytestreams Transport Method, P. Saint-Andre, Sept 2011
XEP 0308 Last Message Correction, K. Smith, April 2013
XEP 0319 Lasy User Interaction in Presence, T. Markmann, July 2017

 

Documentation

The Swiften Developer's Guide is a tutorial-style introduction to building XMPP applications with Swiften. As Stroke shares a design with Swiften, this guide is also useful for Stroke users. The API Reference Guide is a full reference of the public classes offered by Swiften