websemaphore
TypeScript icon, indicating that this package has built-in type declarations

0.9.41 • Public • Published

WebSemaphore client library for TypeScript/JavaScript

This is the official typescript/javacscript client library for WebSemaphore. WebSemaphore aims to provide seamless process synchronization in highly distributed environments.

If you need to have control over concurrent/exclusive access to a resource, potentially across multiple systems, but would prefer to stay focused on your actual use case, WebSemaphore wants to be your friend.

Please see WebSemaphore Docs for more info.

For usage instructions, please see Usage on the official website.

Quick start - should take just a few minutes:

  1. Get an account at WebSemaphore Signup

  2. Create a semaphore and configure maximum concurrent thoughput (maxValue).

  3. Create an Api Key

  4. Install this library: npm i --save websemaphore

  5. Use in code

    5.1 HTTP version

    import { WebSemaphoreHttpClientManager } from "websemaphore";
    import fetch from "node-fetch";
    
    const websemaphoreManager = WebSemaphoreHttpClientManager();
    
    const websemaphoreClient = websemaphoreManager.initialize({ fetch, token: APIKEY });
    
    
    const initHandler = (...) => {
        // ...
        const resp = await websemaphoreClient.semaphore.acquire(SEMAPHORE_ID, msg as any);
        // ...
    }
    
    const processingHandler = (...) => {
        // ...
        // do work
        // ...
        const resp = await websemaphoreClient.semaphore.release(SEMAPHORE_ID, { channelId: "default" });
        // ...
    }
    

    5.2 Websockets version:

    import { WebSemaphoreWebsocketsClientManager } from "websemaphore";
    
    const manager = WebSemaphoreWebsocketsClientManager({ websockets: WebSocket });
    const client = await manager.connect(APIKEY);
    
    const { release, payload, status } =
        await webSemaphoreClient.acquire({ semaphoreId: SEMAPHORE_ID, sync: false, body: { some: "abstract", data: 10 } });
    
    // ...
    await process(payload, log);
    // ...
    release();
    
    await manager.disconnect();
    

Examples

See reference examples in the websemaphore-examples repo.

/websemaphore/

    Package Sidebar

    Install

    npm i websemaphore

    Weekly Downloads

    1

    Version

    0.9.41

    License

    ISC

    Unpacked Size

    190 kB

    Total Files

    40

    Last publish

    Collaborators

    • igorrubinovich