https://github.com/cap32/o--o
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/cap32/o--o
- Owner: Cap32
- License: mit
- Created: 2018-08-18T05:52:32.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-08-18T06:34:49.000Z (almost 8 years ago)
- Last Synced: 2025-01-27T13:48:28.998Z (over 1 year ago)
- Language: JavaScript
- Size: 48.8 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# o--o
[WIP] A lightweight elegant WebSocket in Node.js
## Features
- Support `Pub / Sub` pattern
- Support `Push / Pull` pattern
- Support `Request / Reply` pattern
- Promise based
## Events
- `error` (err) when an un-handled socket error occurs
- `close` when server or connection is closed
- `pub` (...args) when a message publishes
- `sub` (...args) when a message subscription occurs
- `req` (...args) when a message requests
- `rep` (...args) when a message reply occurs
## Usages
**Server.js**
```js
import { Server } from 'o--o';
(async function () {
try {
const server = await Server.create(9994);
server.sub('greeting', (msg) => {
console.log('received', msg);
});
} catch (err) {
console.errer(err);
}
}());
```
**Client.js**
```js
import { Client } from 'o--o';
(async function () {
try {
const client = await Client.connect(`ws://127.0.0.1:9994`);
await client.pub('greeting', 'hello');
} catch (err) {
console.errer(err);
}
}());
```
### Pattern: pub / sub
**Server.js**
```js
server.sub('greeting', (msg) => {
console.log('received', msg);
});
```
**Client.js**
```js
const client = await Client.connect(`ws://127.0.0.1:9994`);
await client.pub('greeting', 'hello');
```
### Pattern: req / rep
**Server.js**
```js
await server.rep('greeting', async (msg) => {
return msg === 'hello' ? 'world' : 'hi';
});
```
**Client.js**
```js
const client = await Client.connect(`ws://127.0.0.1:9994`);
await client.req('greeting', 'hello');
```
## License
MIT © Cap32