Nervous Penpal Message


    2.0.0 • Public • Published


    npm version Build Status

    A node Thrift client utilising a pool of service connections and improved error handling/recovery


    • proper Promise support in pool instance con/destruction
    • correct behaviour on "Internal Error", aka, socket misalignment on unhandled server errors
    • better/existent timeout support for: connections, pool checkout, execution
    • builtin retry support using upstream Thrift code
    • faster detection and pruning of dead connections
    • async/await compatibility and other niceties

    Example usage

    Given a thrift file calculator_service.thrift with contents:

    exception OutOfRange {
      1: string message
    service CalculatorService {
      i32 add(1:i32 num1, 2:i32 num2) throws (1:OutOfRange out_of_range)

    Compile with the thrift command (installable via your package manager):

    thrift --gen js:node calculator_service.thrift

    This will produce JS definitions for your service, which can then be used to create a client:

    const CalculatorService = require('./CalculatorService');
    const thriftClient = require('pooled-thrift-client');
    // host and port are mandatory see other config options in comments
    const host = '', port = 9000;
    const client = thriftClient(CalculatorService, { host, port }, { poolOptions: { max: 5 } });
    // use the client as you would a regular client, get pooling for free
    client.add(1, 2).then(sum => console.log(sum));


    Tests use the calculator_service.thrift example service located in spec/support/thrift. A compiled version is committed to this repository; to recompile it, install thrift using your package manager (e.g., brew install thrift), then follow the instructions in the file.

    Tests can be run using

    npm test


    npm i @brigade/pooled-thrift-client

    DownloadsWeekly Downloads






    Unpacked Size

    35.7 kB

    Total Files


    Last publish


    • anujdas
    • herbstmb
    • joinbrigade
    • parris
    • trotzig