cordova-plugin-websocket-server
Version:
Cordova WebSocket Server Plugin
112 lines (88 loc) • 3.73 kB
Markdown
# Cordova WebSocket Server Plugin
This plugin allows you to run a single, lightweight, barebone WebSocket Server from applications developed using PhoneGap/Cordova 3.0 or newer.
This is not a background service. When the cordova view is destroyed/terminated, the server is stopped.
[CHANGELOG](https://github.com/becvert/cordova-plugin-websocket-server/blob/master/CHANGELOG.md)
## Installation ##
In your application project directory:
```bash
cordova plugin add cordova-plugin-websocket-server
```
## Usage ##
```javascript
var wsserver = cordova.plugins.wsserver;
```
#### `start(port, options, success, failure)`
Starts the server on the given port (0 means any free port).
Binds to all available network interfaces ('0.0.0.0').
```javascript
wsserver.start(port, {
// WebSocket Server handlers
'onFailure' : function(addr, port, reason) {
console.log('Stopped listening on %s:%d. Reason: %s', addr, port, reason);
},
// WebSocket Connection handlers
'onOpen' : function(conn) {
/* conn: {
'uuid' : '8e176b14-a1af-70a7-3e3d-8b341977a16e',
'remoteAddr' : '192.168.1.10',
'httpFields' : {...},
'resource' : '/?param1=value1¶m2=value2'
} */
console.log('A user connected from %s', conn.remoteAddr);
},
'onMessage' : function(conn, msg) {
console.log(conn, msg); // msg can be a String (text message) or ArrayBuffer (binary message)
},
'onClose' : function(conn, code, reason, wasClean) {
console.log('A user disconnected from %s', conn.remoteAddr);
},
// Other options
'origins' : [ 'file://' ], // validates the 'Origin' HTTP Header.
'protocols' : [ 'my-protocol-v1', 'my-protocol-v2' ], // validates the 'Sec-WebSocket-Protocol' HTTP Header.
'tcpNoDelay' : true // disables Nagle's algorithm.
}, function onStart(addr, port) {
console.log('Listening on %s:%d', addr, port);
}, function onDidNotStart(reason) {
console.log('Did not start. Reason: %s', reason);
});
```
#### `stop(success,failure)`
Stops the server.
```javascript
wsserver.stop(function onStop(addr, port) {
console.log('Stopped listening on %s:%d', addr, port);
});
```
#### `send(conn, msg)`
Sends a message to the given connection.
```javascript
// provide a String to send a text frame (websocket opcode 1)
wsserver.send({'uuid':'8e176b14-a1af-70a7-3e3d-8b341977a16e'}, 'hello friend!');
// provide a TypedArray / ArrayBuffer to send a binary frame (websocket opcode 2)
wsserver.send({'uuid':'8e176b14-a1af-70a7-3e3d-8b341977a16e'}, Uint8Array.from([1, 2, 3, 4]));
```
#### `close(conn, code, reason)`
Closes a websocket connection. Close event code and reason are optional.
```javascript
wsserver.close({'uuid':'8e176b14-a1af-70a7-3e3d-8b341977a16e'}, 4000, 'my reason');
```
#### `getInterfaces(callback)`
Returns the non-loopback IPv4 and IPv6 network interfaces.
```javascript
wsserver.getInterfaces(function(result) {
for (var interface in result) {
if (result.hasOwnProperty(interface)) {
console.log('interface', interface);
console.log('ipv4', result[interface].ipv4Addresses);
console.log('ipv6', result[interface].ipv6Addresses);
}
}
});
```
## Credits
#### Android
It depends on [the TooTallNate WebSocket Server](https://github.com/TooTallNate/Java-WebSocket).
#### iOS
It depends on [the couchbasedeps PocketSocket Server](https://github.com/couchbasedeps/PocketSocket) forked from [the zwopple PocketSocket Server](https://github.com/zwopple/PocketSocket).
## Licence ##
The MIT License