node-bosh-xmpp-client

XMPP clients that connects via BOSH

node-bosh-xmpp

Are you using node-xmpp for XMPP? But get blocked by coorperate firewalls? Then node-bosh-xmpp is API compatible with node-xmpp and gives you the ability to use XMPP over a standard HTTP port.

I was looking for a BOSH XMPP client for node and came accross Anoop's node-xmpp-via-bosh implementation. His code was not completely working for me so I forked his code and fixed the issue I was having. I wanted to be able to specify the URL of the BOSH server and I also had some issues with the authorization proces.

npm install node-bosh-xmpp-client

Following you will find the documentation from Anoop which I updated to reflect my changes:

It is inspired by node-xmpp (https://github.com/astro/node-xmpp) and xmppjs(http://github.com/mwild1/xmppjs) and it is API compatible with node-xmpp (except for the constructor).

It is an xmpp library which lets you establish a persistent session to xmpp server via a bosh-server and communicate willingly.

  • Constructor: Client(jid, password, bosh, route)

      Parameters:  
    
          *jid*       : [String] jabber id of user (e.g. `user@example.com/office`)  
          *password*  : [String] password  
          *bosh*      : [String] url of the bosh-server (e.g. `http://localhost:5280/http-bind/`)  
          *route*     : [String] route attribute [if used] for connecting to xmpp server  
      Return Value:  
    
          new Client Object having following properties:  
    
    1. Event-emitter for the following events

      online Event-listener: function callback()

      error Event-listener: function callback(exception)

       `exception[String]` is the description of error
      

      offline Event-listener: function callback(condition)

       `condition[String]` is the description of reason for being offline
      

      stanza Event-listener: function callback(stanza)

       `stanza[Object]` is the ltx xml element.
      
    2. Function: send(stanza)

      enqueues the stanza into the pending array to be sent to bosh-server on next Tick parameters:

       *stanza* : [Object] ltx xml Element object
      
    3. Function: sendMessage(to, body, type = "chat")

      sends a message 'body' to jid 'to' with type set to 'type'

      parameters:

       *to*   : [String] jid of receiver(e.g. `myfriend@example.com/home`)
       *body* : [String] message to be sent
       *type* : [String] should only be among the permitted values of `type` for xmpp message stanza
      
    4. Function: disconnect()

      sends immediately any pending stanzas, ends the stream by sending terminate packet.

  • Constructor Element(xname, attrs)

      alias to `ltx.Element` Constructor
    
  • Function: $build(xname, attrs)

      an alias for `new ltx.Element(xname, attrs)`
    
      Parameters:
    
          *xname* : [string] name for the xml element
          *attrs* : [Object] containing all the attributes to set up
    
      Return value:
    
          a new ltx.Element object
    
  • Function: $msg(attrs)

      an alias for `new ltx.Element("message", attrs)`
    
      Parameters:
    
          *attrs* : [Object] containing all the attributes to set up
    
      Return value:
    
          a new ltx.Element object
    
  • Function: $iq(attrs)

      an alias for `new ltx.Element("iq", attrs)`
    
      Parameters:
    
          attrs : [Object] containing all the attributes to set up
    
      Return value:
    
          a new ltx.Element object
    
  • Function: $pres(attrs)

      an alias for `new ltx.Element("presence", attrs)`
    
      Parameters:
    
          *attrs* : [Object] containing all the attributes to set up
    
      Return value:
    
          a new ltx.Element object
    

    Function: setNoMoreResponse() Artificially set the OVER state in order to no longer answer or send on this connection. This is useful if you are taking the rid/jid/sid to another connection and need this one to stop being 'active' at that time.

  • Function: setLogLevel(logLevel)

      sets the logLevel for module (use only when in serious problem i.e. debug mode).
    
      Parameters:
    
          *logLevel* : [String] permissible values:
    
                 *FATAL*  :   displays nothing [default]
                 *ERROR*  :   displays error messages
                 *INFO*   :   informs about important events
                 *DEBUG*  :   prints each packet sent and received
    

Shout outs go to the Webinos project. They provided the time and need to make this fix.