1. Ivan Vučica
  2. ZXMPP

Source

ZXMPP /

Filename Size Date modified Message
extensions
81 B
Decoding SDP using sdpToJingle. Placing a call using converted SDP data.
45 B
Added tag 1.0 for changeset c70075a29333
258 B
Added punjab-bind. Differing between cfg route and cfg domain (previously merged into cfg server). Added login and password boxes.
1.1 KB
Disabled cryptographic key temporarily, to placate Punjab.
1.7 KB
Improved documentation a bit.
26.5 KB
Switched to LGPLv2.
3.7 KB
Improved install instructions
2.1 KB
Bold names in chat windows. Autofocusing on chat window textbox when user clicks on a name in roster.
10.8 KB
Now using deep copy algorithm from Oran Looney (http://oranlooney.com/deep-copy-javascript/)
25.4 KB
Facebook platform authentication.
9.3 KB
Switched to LGPLv2.
2.3 KB
Facebook platform authentication.
211 B
Added the homepage to repository.
91 B
Displaying roster. Opening message window.
6.5 KB
Digest-MD5 SASL authentication mechanism implemented.
10.3 KB
Digest-MD5 SASL authentication mechanism implemented.
3.8 KB
Facebook platform authentication.
56.6 KB
Added a screenshot.
1.1 KB
Facebook platform authentication.
15.7 KB
Further work on jingle.
13.6 KB
Deanonymized many functions. Added backtrace-generating functionality. Fixed issue with empty string instead of a packet being stored upon restore in poll packet queue (because of toJSON() not being implemented in packet.
2.0 KB
Facebook platform authentication.
2.8 KB
Server decides priorities for SASL mechanisms.
9.1 KB
Server decides priorities for SASL mechanisms.
4.8 KB
Facebook platform authentication.
3.0 KB
Server decides priorities for SASL mechanisms.
8.2 KB
Crashfixes. In presence, show and type are not the same. When doing presenceUpdate, also pass the original stanza to handlers (needed to handle subscriptions).
2.9 KB
Replaced direct console calls with zxmppConsole wrapper calls.
10.7 KB
Crashfixes. In presence, show and type are not the same. When doing presenceUpdate, also pass the original stanza to handlers (needed to handle subscriptions).
11.3 KB
Logging every incoming and outgoing packet. Prefixed with << and >> for easier filtering in zxmppConsole.
1.5 KB
Replaced direct console calls with zxmppConsole wrapper calls.
19.5 KB
Server may return fullJid with different bareJid. This is particularly true with auth mechanism ANONYMOUS. So, update local bareJid too.
2.8 KB
Replaced direct console calls with zxmppConsole wrapper calls.
5.6 KB
Crashfixes. In presence, show and type are not the same. When doing presenceUpdate, also pass the original stanza to handlers (needed to handle subscriptions).
2.2 KB
Digest-MD5 SASL authentication mechanism implemented.
2.7 KB
Merge
27.8 KB
Facebook platform authentication.
9.0 KB
Removed an img.
15.5 KB
In case server sends something that isn't content-type'd as XML, browser may refuse to parse it. This patch makes Z-XMPP try hard to get browser to parse the XML.
1.7 KB
Fetching and parsing vcard, caching it and displaying its fn within roster.

Z-XMPP

For more info, visit http://ivan.vucica.net/zxmpp/.

What is it?

This is an implementation of an XMPP client in JavaScript. It uses BOSH concept of HTTP binding as defined by XEP-0124 and XEP-0206.

It is a semi-structured hack, assembled not so much as a planned effort by a JavaScript expert; it's more of a thing that's here just to serve its purpose, and that purpose is luckily for its internals to be pretty. So hacker: beware!

Goal

Goal is to have a backend library for doing XMPP, and a separate GUI that will allow attaching an overlay over existing webpage, as well as almost transparent reconnection upon unloading the page and reloading it.

Another goal is to support major standards-based browsers: Safari, Chrome, Opera, Firefox.

User interface

While primarily an XMPP library that preserves connection between page switches, Z-XMPP also includes an ugly user interface component for instant messaging. It appears as a bar on the bottom of the screen.

Screenshot of Z-XMPP UI

Compatibility

It is expected that the client will cover at least XEP-0242: XMPP Client Compliance 2009 Core Client profile. Of course, almost anything goes that doesn't require additional socket connections (since they're a bit... tricky to do in JavaScript, you'll surely agree).

Z-XMPP has been tested with the following BOSH connection managers:

Z-XMPP has been tested with the following XMPP server software:

Version 1.0

Following SASL authentication methods are partially or fully supported:

  • PLAIN
  • DIGEST-MD5

Following XEPs are partially or fully supported:

  • XEP-0030: Service Discovery
  • XEP-0054: vcard-temp
  • XEP-0085: Chat State Notifications
  • XEP-0092: Software Version
  • XEP-0115: Entity Capabilities
  • XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)
  • XEP-0206: XMPP Over BOSH

There may be additional features supported, but not documented.

License

Please read the LICENSE to see current use terms.

Installation

Here's how to set up demo.php to work.

  1. Start up a server such as ejabberd or Prosody. Enable BOSH in it by referring to the server's manual. Alternatively, set up a connection manager for BOSH (a BOSH service that acts as a proxy to the real XMPP server). A good connection manager is Punjab.
  2. Get your HTTP server to forward requests from a directory in the same domain and port that your site (or demo.php) is hosted on. If you use Apache, .htaccess shipping with Z-XMPP is a good starting point. This is required due to Javascript cross-domain scripting access policies on modern browsers, which would prevent Z-XMPP and any other Javascript XMPP library from accessing the actual BOSH server directly.
  3. Edit demo.php to point to the directory that now redirects to the proper path and port of your BOSH server.

These instructions can, of course, be improved, and the author will be happy to answer your questions on how to get Z-XMPP to connect to your XMPP server on your web site (to the extent of his ability, of course).

Contributing

Patches and good natured criticism can be directed to zxmpp@vucica.net.

You can also contact me via xmpp:ivucica@gmail.com


Copyright 2010-2012 Ivan Vučica