Happy to announce a new version of JSJaC, the one and only lib for implementing jabber clients (if it’s about the web ;)). Most notably version 1.2.2 hopefully makes you happy with its new packer (borrowed from mootools) that shrinks down filesize from 71K to 44K. Other changes include bugfixes as well as some issues with licenses and copyright statements being fixed now.

13 Responses to jsjac++


  1. Comment by Mark | 2008/01/04 at 10:25:50


    I have users with empty roster that want to chat with each other.

    If user A sends a message to user B, how can user B retrieve user’s A nickname or one of his vCard fields? As far as I know only the JID is sent with each one on one chat message.


  2. Comment by Steve | 2008/01/04 at 10:49:57


    first off your question is totally unrelated to jsjac. Retrieving a user’s vCard is documented at XEP-0054: http://www.xmpp.org/extensions/xep-0054.html

  3. Comment by Matt Ahl | 2008/01/24 at 02:10:29


    I may have found an issue with the JSJaCPacket class. The getChild method is inconsistently defined between browsers. In IE, only top-level children are searched, while in other browsers all descendents with the given name (and namespace) are searched. This is because getChild() uses the method getElementsByTagNameNS that does a deeper search and is not defined in IE. The fallback code will be used in IE, does not search below the top-level.

    This causes an issue when using digest-based Non-SASL Authentication as described in JEP-0078. The calle to iq.getChild(‘digest’) in _doLegacyAuth2 of JSJaCConnection thus returns null in IE (since the spec defines the iq element contains a query element which then contains the digest element), but returns a valid child in other browsers.

    Any thoughts?


  4. Comment by Steve | 2008/01/24 at 11:27:47

    Hi Matt, thanks a lot for this detailed report. Great job! I’ll try to fix this ASAP.

  5. Comment by Steve | 2008/01/24 at 17:10:07

    Should be fixed in SVN now

  6. Comment by Matt Ahl | 2008/01/24 at 20:35:46

    Thanks for the quick turnaround on this! I integrated this change and it worked well.

  7. Comment by Mark | 2008/01/27 at 17:11:18


    Thank you for your previous answer.

    I have a question regarding your http-bind module. It might not be the place to ask but I couldn’t find the right place.

    I need to extend your http-bind module to support JSON(javascript) syntax.
    Basically, I need ejabberd to listen to a GET request and reply with JSON syntax which is the same as returning a javascript file. I guess it shouldn’t be hard but I’m shooting in the dark.

    Do you plan to support the JSON syntax in the future?

    Can you explain the steps I’ll need to take to modify your code?

    Do you know of utf-8 erlang json implementation?


  8. Comment by Steve | 2008/01/28 at 13:38:24

    Mark, if you’re talking about “a GET request” you are not talking about the optional JSON syntax of BOSH (formerly known as HTTP Binding), are you? It’s more about additional requests which go along side to Jabber and HTTP Binding, is it? If yes (the latter), then there’s a problem which arises out of the nature of BOSH: a browser typically is allowed to make 2 concurrent AJAX requests at a maxmimum for the same host and port. BOSH can take up to two concurrent connections. So if you do additional AJAX requests you might run into trouble here.
    Nevertheless I wouldn’t recommend to hack this into the ejabberd http-bind module. If you’re using ejabberd2 you could just write your own standalone module which handles such requests. ejabberd2 got a nice pluggable architecture for extending its HTTP capabilities. Have a look at the docs!

  9. Ben
    Comment by Ben | 2008/01/28 at 15:12:12

    Mark, you may want to have a look at yaws’ json code for a fairly well working json implementation. Running ejabberd and yaws simultaneously might be tricky though, but you could simly take the json module as a starting point.

  10. Comment by Mark | 2008/01/28 at 15:51:38

    I am talking about the optional JSON syntax of BOSH.
    Is it possible?

  11. Comment by Steve | 2008/01/28 at 16:33:44

    Mark, sorry for asking again, I wasn’t clear enough in first place: Are you talking about the Alternative Script Syntax as outlined by http://www.xmpp.org/extensions/xep-0124.html#script or about transmitting JSON encode payloads as seen in example 6 at http://www.xmpp.org/extensions/xep-0124.html#stanzas ?

  12. Comment by Mark | 2008/01/28 at 16:47:20

    Yes, we are talking about the same thing.

  13. Comment by Nathan | 2008/02/01 at 16:00:05

    I’m using JabberHTTPBind and JSJac 1.2.2. I can’t get it to open a chat session at all.

    In Firefox I get this error:
    An error occured:
    Code: 503
    Type: cancel
    Condition: service-unavailable

    In IE I get this error:
    An error occured:
    Code: 500
    Type: wait
    Condition: internal-server-error

    And Tomcat’s log is saying this:
    [2] sending response [390275]: Set the ‘to’ attribute of stream element to the domain part of the user’s JID. Example: to=’gmail.com’.

    I’m also getting a lot of these:
    [Fatal Error] :1:290: The element type “doc” must be terminated by the matching end-tag “”.

    I’ve used the full email and just the first part (i.e. gogo@gmail.com and gogo) and neither work.

    Any ideas?

Comments are closed