Cap32 / o--o

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

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

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

server.sub('greeting', (msg) => {
  console.log('received', msg);
});

Client.js

const client = await Client.connect(`ws://127.0.0.1:9994`);
await client.pub('greeting', 'hello');

Pattern: req / rep

Server.js

await server.rep('greeting', async (msg) => {
  return msg === 'hello' ? 'world' : 'hi';
});

Client.js

const client = await Client.connect(`ws://127.0.0.1:9994`);
await client.req('greeting', 'hello');

License

MIT © Cap32

About

License:MIT License


Languages

Language:JavaScript 100.0%