Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maxleiko/wsmsgbroker
WebSocket message broker using native WebSocket implementation and a lightweight full-JSON encoded protocol scheme
https://github.com/maxleiko/wsmsgbroker
Last synced: 7 days ago
JSON representation
WebSocket message broker using native WebSocket implementation and a lightweight full-JSON encoded protocol scheme
- Host: GitHub
- URL: https://github.com/maxleiko/wsmsgbroker
- Owner: maxleiko
- License: mit
- Created: 2014-10-29T12:42:09.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2016-09-06T16:05:47.000Z (about 8 years ago)
- Last Synced: 2024-10-06T05:23:20.170Z (about 1 month ago)
- Language: JavaScript
- Size: 39.1 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
WSMsgBroker
===========WebSocket message broker using native WebSocket implementation and a lightweight full-JSON encoded protocol scheme
### Client API
```js
var WSMsgBroker = require('wsmsgbroker');// assuming you have a WSMsgBroker.Server running at ws://localhost:9042/foo
var client0 = new WSMsgBroker('client0', 'localhost', 9042, 'foo');
var client1 = new WSMsgBroker('client1', 'localhost', 9042, 'foo');client1.on('registered', function () {
client1.on('message', function (msg, response) {
console.log('client1 received > '+msg);
response.send('Hi to you too, sir.');
});client0.send('Hi there', 'client1', function (from, answer) {
console.log('client0 received an answer from '+from+' > '+answer);// but you can also send messages without callback
// resulting in "response" to be null for the receiver :)
client0.send({complex: 'thing'}, 'client1');
});
});
```## Client.send(msg, dest, callback)
**msg**: {Mixed} The thing you want to send (/!\ it HAS TO be serializable by JSON.stringify(...))
**dest**: {String|Array} Your message receiver(s) (determined by the `id` used at the creation of the client)
**callback**: [optional] {Function} if set, it will allow a receiver to answer (fastest wins)### Protocol
**clients -> server**
Clients can initiate 4 **actions** with the servers:
- register
- unregister
- send
- answer**server -> clients**
Servers can answer with 4 **actions** to the clients:
- answer
- message
- registered
- unregistered**WSMsgBroker** expects **JSON-encoded** strings to be send accross the network
Below is the list of JSON-encoded **clients -> server** actions`register` - register a client on the server
- `"id"` a unique ID that identifies this client on the server```json
{
"action": "register",
"id":
}
````unregister` - unregister a client from a server
```json
{
"action": "unregister"
}
````send` - send a message to one (or more clients)
- `"dest"` must be a string or an array of strings```json
{
"action": "send",
"dest": [ , ],
"message":
}
````answer` - send an answer to a received message
```json
{
"action": "answer",
"message":
}
```_____________________________
Below is the list of JSON-encoded **server -> clients** actions
`message` - this client received a message
```json
{
"action": "message",
"message": ,
"from":
}
````answer` - received when someone answered to a message
```json
{
"action": "answer",
"message": ,
"from":
}
````registered` - received when the server has successfully registered this client
```json
{
"action": "registered",
"id":
}
````unregistered` - received when the server has successfully unregistered this client
```json
{
"action": "unregistered",
"id":
}
```