Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/chris-rock/node-xmpp-core

Core fuctionality of node-xmpp
https://github.com/chris-rock/node-xmpp-core

Last synced: about 1 month ago
JSON representation

Core fuctionality of node-xmpp

Awesome Lists containing this project

README

        

# node-xmpp-core

Library to handle all the core functionality for:

* [node-xmpp-client](https://github.com/node-xmpp/node-xmpp-client)
* [node-xmpp-component](https://github.com/node-xmpp/node-xmpp-component)
* [node-xmpp-server](https://github.com/node-xmpp/node-xmpp-server)

[![build status](https://secure.travis-ci.org/node-xmpp/node-xmpp-core.png)](http://travis-ci.org/node-xmpp/node-xmpp-core)

## Installation

__Note:__ We now only support nodejs versions 0.8.0 and greater.

With package manager [npm](http://npmjs.org/):

npm install node-xmpp-core

### Testing

Install the dev dependencies, then...

```npm test```

To run the tests and the code style checks then use:

```grunt test```

Also see the tests run in [travis](http://travis-ci.org/node-xmpp/node-xmpp-core). The tests in travis run both the code and code style tests.

## How to use

Please use one of `node-xmpp-client/component/server`

## Objectives of *node-xmpp-core:*

* Use node.js conventions, especially `EventEmitter`, ie. for write
buffer control
* Fast parsing, `node-expat` was written for this library

## Features

* Simple JID parsing with Stringprep normalization
* Optional now, you won't need ICU for just node-xmpp
* Please be aware if you identify users by JIDs
* `npm install node-stringprep`
* Uses [ltx](http://github.com/astro/ltx)
* Much easier to handle than a standard DOM
* xmlns-aware
* Easy XML builder like Strophe.js (see down)
* Non-buffering serialization
* Was split out of node-xmpp for modularization and resuability

## Dependencies

* [node-expat](http://github.com/node-xmpp/node-expat) (requires libexpat!)
* [ltx](http://github.com/node-xmpp/ltx)

Optional

* [node-stringprep](http://github.com/node-xmpp/node-stringprep): for [icu](http://icu-project.org/)-based string normalization.

Automatically building the optional library can be turned off by `npm config set optional false` or by setting the environmental variable `export NPM_CONFIG_OPTIONAL=false`. On Heroku this is done through `heroku config:set NPM_CONFIG_OPTIONAL=false`, for example.

### Building XML Elements

Strophe.js' XML Builder is very convenient for producing XMPP
stanzas. ltx includes it in a much more primitive way: the
`c()`, `cnode()` and `t()` methods can be called on any *Element*
object, returning the new child element.

This can be confusing: in the end, you will hold the last-added child
until you use `up()`, a getter for the parent. `Connection.send()`
first invokes `tree()` to retrieve the uppermost parent, the XMPP
stanza, before sending it out the wire.

# Documentation

(Builing up documentation slowly)

## JID Manipulation

...coming soon...