Novice, Paragon, Master

    @egodigital/ws
    TypeScript icon, indicating that this package has built-in type declarations

    0.5.0 • Public • Published

    npm

    node-ws

    A simplfied library for Node.js 10+ for handling WebSocket connections, written in TypeScript.

    Install

    Execute the following command from your project folder, where your package.json file is stored:

    npm install --save @egodigital/ws

    Usage

    With Express

    You are able to share the same port with an express and web socket instance.

    import * as express from 'express';
    import { SimpleWebSocket, withExpress } from '@egodigital/ws';
    
    // ##### SERVER #####
    
    // Express instance
    const app = express();
    
    // http://localhost:8080/
    app.get('/', (req, res) => {
        return res.status(200)
            .send('Hello, from Express!');
    });
    
    // setup websocket server with Express app
    const { server, listen } = await withExpress({
        app: app,
        key: 'ego',  // a string or buffer
                     // for authentication
    });
    
    // handle messages of type 'HelloEGO'
    server.onMessage(async (ctx) => {
        console.log('server.onMessage', ctx.message);
    
        // optional data, which should be
        // send with OK message
        return 23979;
    }, (msg) => 'HelloEGO' === msg.type);
    
    // start listening on port 8080
    await listen(8080);
    
    
    // ##### CLIENT #####
    
    // connect to local server
    const client = SimpleWebSocket.fromUrl('ws://localhost:8080');
    
    // handle messages of any type from server
    client.onMessage((ctx) => {
        console.log('client.onMessage', ctx.message);
    });
    
    await client.connect('ego');  // same key as submitted to 'withExpress()'
                                  // s.a.
    
    // send message of type 'HelloEGO'
    // and data 5979 to local server
    await client.send('HelloEGO', 5979);

    Events

    // SimpleWebSocket
    client.on('message', (msg, client) => {
        // handle message from remote server
    });
    client.on('close', () => {
        // connection with remote server has been closed
    });
    
    // SimpleWebSocketServer
    server.on('connection', (client, server) => {
        // new connection with 'client'
    });
    server.on('message', (msg, client, server) => {
        // handle message from remote client
    });
    server.on('close', (client, server) => {
        // connection with remote client has been closed
    });

    Documentation

    The API documentation can be found here.

    Install

    npm i @egodigital/ws

    DownloadsWeekly Downloads

    1

    Version

    0.5.0

    License

    LGPL-3.0

    Unpacked Size

    48.5 kB

    Total Files

    14

    Last publish

    Collaborators

    • mkloubert
    • mkloubertego
    • ekegodigital