Classes

JSJaCConnection

This is a somewhat abstract base class. You can't instantiate objects from it but it provides functionality common to all specific backends like JSJaCHttpPollingConnection.

boolean: connected()
	checks if connection is connected
	RETURNS: boolean - true if connected, false otherwise

boolean: isPolling()
	whether this connection is using polling
	RETURNS: true if polling is used (thus indicating it makes sense to use
	         setPollInterval)

void: registerHandler(string: event, function: handler)
	register a handler for event. if event happens handler is called.

	PARAMS: event - known events so far: 'message','iq','presence',
                        'ondisconnect', 'onconnect', 'onerror', 'status_changed'

	        handler - the function to be called. for events 'message', 'iq'
	                  and 'presence' the handler gets passed an JSJaCPacket 
	                  as argument for processing. 
	                  'onerror' an error node is supplied, e.g.: 
	                  <error code='404' type='cancel'>
	                    <item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
	                  </error>

void: send(JSJaCPacket: aJSJaCPacket [, function: callback [, any: arg]])
	appends aJSJaCPacket to send queue. registers callback if given

	PARAMS: aJSJaCPacket - packet to send
	        callback - a callback to call when reply with same id comes in
	                   id is set automatically if none set
	        arg - optional arg to call callback 
	              [callback is called with callback(aJSJaCPacket, arg)]

int: setPollInterval(int: timeout_msec)
	change polling interval to timeout_msec

	PARAMS: timeout_msec
	RETURNS: actual value the polling interval has been set to. 
	         -1 on failure.

JSJaCHttpPollingConnection

Implements communication with an HTTP Polling Component.

constructor: JSJaCHttpPollingConnection(oArgs[JSON notation!])

	oArgs:= string: httpbase,    # http base address of service to be used
          int:    timerval,     # initial poll interval in msec
          object: oDbg         # typeof Debugger (optional)

void: connect(oArgs[JSON notation!])

	oArgs := string: domain,     # jabber domain
           string: username,   # jabber username
           string: resource,   # resource
           string: pass,       # password

           boolean: register,  # whether to register a new account
                               # (using in-band registration of available) 
                               # [optional]

           string: authtype,   # one of 'sasl', 'saslanon' 
                               # or 'nonsasl' 
                               # [optional, default: sasl]

           string: authhost    # hostname of auth service if different  
                               # from xmpp domain
                               # [optional]

void: disconnect()
	disconnects from server

JSJaCHttpBindingConnection

Implements communication with an HTTP Binding Service (aka Connection Manager).

constructor: JSJaCHttpBindingConnection(oArgs[JSON notation!])

	oArgs:= string: httpbase,    # http base address of service to be used
          int:    timerval,    # initial poll interval in msec
          object: oDbg         # typeof Debugger (optional)

void: connect(oArgs[JSON notation])

	oArgs := string: domain,     # jabber domain
           string: username,   # jabber username
           string: resource,   # resource
           string: pass,       # password

           boolean: register,  # whether to register a new account
                               # (using in-band registration of available) 
                               # [optional, default: false]

           string: host,       # connect host [optional, default: domain]

           int: port,          # port of connect host 
                               # [optional, default: 5222]

           boolean: secure,    # whether to indicate that SSL should be 
                               # used to connect to remote host 
                               # [optional, default: false]

           int: wait           # time in seconds the connection manager 
                               # is allowed to hold an idle request 
                               # [optional, default: 300]

           string: authtype,   # one of 'sasl', 'saslanon' 
                               # or 'nonsasl' 
                               # [optional, default: sasl]

           string: authtype    # hostname of auth service if different  
                               # from xmpp domain
                               # [optional]

void: disconnect()
	disconnects from server

JSJaCPacket

Abstract base class for jabber packets.

string: pType()
	returns type of top level node (either 'message', 'iq' or 'presence')

JSJaCPacket: setTo(string: to)
JSJaCPacket: setFrom(string: from)
JSJaCPacket: setID(string: id)
JSJaCPacket: setType(string: type)
JSJaCPacket: setXMLLang(string: xmllang)
JSJaCPacket: setXMLNS(string: xmlns)
	setters for common attributes of top level nodes.

	PARAMS: value to set attribute to
	RETURNS: the packet itself again

string: getTo()
string: getFrom()
string: getID()
string: getType()
string: getXMLLang()
string: getXMLNS()
	getters for common attributes of top level nodes

string: xml()
	returns string representation of DOM xml tree

IMPORTANT NOTE: Usage of getDoc().xml is DEPRECATED as it is not supported by browsers other than IE and Mozilla based ones

DOMDocument: getDoc()
	Returns internal DOMDocument. This is where you can do your own
	stuff like creating new childs and so on. Most notably you would
	use it like follows:

	var iq = new JSJaCIQ();
	iq.setType('get');
	iq.xml() => "<iq type='get'/>"

	query = iq.setQuery('jabber:iq:private');
	iq.xml() => "<iq type='get'><query xmlns='jabber:iq:private' /></iq>'

	query.appendChild(iq.getDoc().createElement('storage')).setAttribute('xmlns','storage:bookmarks');
	iq.xml() => "<iq type='get'><query xmlns='jabber:iq:private'><storage xmlns='storage:bookmarks'></query></iq>'


DOMElement: getNode()
	returns top level node

JSJaCNode: clone()
  returns a (deep) copy of calling packet

JSJaCIQ

An IQ packet

constructor: JSJaCIQ()

JSJaCIQ: setIQ(to,from,type,id)
	convenient method to set some attributes at once

DOMElement: setQuery(string: xmlns)
	creates new query child element. inserts it at top level node and returns it

	PARAMS: xmlns - namespace attribute for query

	RETURNS: DOMElement that has been created

DOMElement: getQuery()
	returns query element

string: getQueryXMLNS()
	returns xmlns attribute of query element

JSJaCPresence

A presence packet

constructor: JSJaCPresence()

JSJaCPresence: setShow(string: show)
	creates 'show' child element and sets its CDATA to show (should be one of 'away','xa','dnd' or 'chat')

JSJaCPresence: setStatus(string: status)
	creates 'status' child element and sets its CDATA to status

JSJaCPresence: setPriority(string: prio)
	creates 'priority' child element and sets its CDATA to prio

JSJaCPresence: setPresence(string: show, string: status, string: prio)
	conveniant method to set some values at once

string: getShow()
string: getStatus()
string: getPriority()
	return value of corresponding element

JSJaCMessage

A message packet

constructor: JSJaCMessage()

JSJaCMessage: setBody(string: body)
	creates 'body' element with value body
JSJaCMessage: setSubject(string: subject)
	creates 'subject' element with value subject

string: getBody()
string: getSubject()
	return value of corresponding element

JSJaCJID

models JID objects to conveniently handle Jabber IDs

constructor: JSJaCJID(string: jid)
constructor: JSJaCJID(object: {node: sNode, domain: sDomain, resource: sResource})

string: getNode()
        returns the node part of the jid
string: getDomain()
        returns domain part of the jid
string: getResource()
        returns resource part of the jid

JSJaCJID: setNode(string: node) throws JSJaCJIDInvalidException
          set node part of jid to 'node'
          returns self reference to object
JSJaCJID: setDomain(string: domain) throws JSJaCJIDInvalidException
          set domain part of jid to 'domain'
          returns self reference to object
JSJaCJID: setResource(string: resource)
          set resource part of jid to 'resource'
          returns self reference to object

string: toString()
        returns string representation of JID object
JSJaCJID: removeResource()
          sets resource part of jid to ''
          returns self reference to object

Events

'status_changed' Event

Available states are

  • 'initializing' ... well
  • 'connecting' if connect() was called
  • 'processing' if it's about to operate as normal
  • 'onerror_fallback' if there was an error with the request object
  • 'protoerror_fallback' if there was an error at the http binding protocol flow (most likely that's where you interested in)
  • 'internal_server_error' in case of an internal server error
  • 'suspending' if suspend() is being called
  • 'aborted' if abort() was called
  • 'disconnecting' if disconnect() has been called

Have a look at examples/simpleclient.html for a short example on how to use this.