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.

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