https://github.com/ppmathis/iowamp
WAMP™ server in NodeJS
https://github.com/ppmathis/iowamp
Last synced: 9 months ago
JSON representation
WAMP™ server in NodeJS
- Host: GitHub
- URL: https://github.com/ppmathis/iowamp
- Owner: ppmathis
- Created: 2013-02-02T21:27:35.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2013-02-02T22:06:52.000Z (over 13 years ago)
- Last Synced: 2025-06-22T07:02:44.010Z (about 1 year ago)
- Language: JavaScript
- Size: 121 KB
- Stars: 8
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# iowamp #
iowamp is a WAMP™ server in NodeJS. Currently it only supports basic RPC calls, but pub/sub support is coming.
It attaches to [WebSocket.IO](http://github.com/learnboost/websocket.io).
## What is WAMP™? ##
[WebSocket Application Messaging Protocol (WAMP)](http://www.tavendo.de/autobahn/protocol.html) is a protocol for RPC & PubSub support, based on WebSockets. Technically, WAMP is an officially registered WebSocket subprotocol proposed by Tavendo.
## License ##
Apache License (version 2)
## Prerequisites ##
iowamp itselfs requires version 0.6.x of NodeJS or higher. If you want to run the tests, you'll want Vows.
To really use iowamp, you will also need [WebSocket.IO](http://github.com/learnboost/websocket.io).
## Installing with [NPM](http://npmjs.org) ##
```
npm install iowamp
```
## Attach iowamp to a websocket.io server ##
Before you can start using iowamp in your project, you need to attach it to an websocket.io instance of your choice:
```javascript
var iowamp = require('./lib'),
wsio = require('websocket.io');
var server = wsio.listen(8000);
var app = iowamp.attach(server);
```
## Register a RPC class with methods ##
Registering a RPC class with some methods is also easy - here is an example for it:
```javascript
var iowamp = require('./lib'),
wsio = require('websocket.io');
var server = wsio.listen(8000);
var app = iowamp.attach(server);
app.rpc('http://example.com/calc#', function() {
this.register('add', function(cb, a, b) {
cb(null, a + b);
});
});
```
The code should be kinda self-explanatory, allthough here is some additional information:
**app.rpc(baseURI, constructor)** registers a new RPC class
- *baseURI* The base URI for the class. It must be a complete URI and it should end with a #. (A CURIE / compact URI is not allowed)
- *constructor* Should be a function which registers some RPC methods (will get called in the iowamp scope)
**this.register(name, method)**
- *name* The name of the method. To call the method in a WAMP client, you would need to specifiy the baseURI and the method name like here: http://example.com/calc#add
- *method* The method which should be called. The first parameter is always the callback function, followed by the arguments passed from the WAMP client.
**cb(error, result)** Kinda self-explanatory. If an error will be passed, a generic error will be send back to the WAMP client. If not, the result will be send back.
## Catching unknown methods ##
If you want to catch methods which are unknown / not declared, you can listen for the *unknownCall* event:
```javascript
app.on('unknownCall', function(baseURI, method, callback, args...) {
// Your code goes here
});
```
- - -
iowamp NodeJS WAMP™ server - © 2012-2013 P. Mathis (dev@snapserv.net)