Giter Site home page Giter Site logo

node-bosh-xmpp-client's Introduction

node-bosh-xmpp

Motivation

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.

Credits go to Anoopc

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.

Installation instructions

npm install node-bosh-xmpp-client

Code instructions

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.

Documentation for API

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

      Parameters:  
    
          *jid*       : [String] jabber id of user (e.g. `[email protected]/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. `[email protected]/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

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

node-bosh-xmpp-client's People

Contributors

anoopc avatar eelcocramer avatar jcbrand avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.