npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tcpmultiplexer

v0.3.5

Published

Sharing a server TCP connection between multiple clients

Readme

multiplexer

Sharing a server TCP connection between multiple clients

Install

As the pre release, I only build this for Windows platform. But you can build it on other platforms using Mono. It should be easy since there's no external dependencies.

Grab the binary from release. Or via NPM:

npm install -g tcpmultiplexer

Usage

  1. Start the multiplexer from command line
  2. Connect clients to localhost:3333
  3. In multiplxer command line, input command connect <server> <port> to connect to the remote service that will be shared by all the clients.
  4. At any time, you can terminate a client, or connect a new client, without affecting the connection to the remote server.
> multiplexer --help

  -p, --port              (Default: 3333) Local port to listen for client
                          connections
  --help                  Display this help screen.
  --version               Display version information.
  remote-host (pos. 0)    Remote server to connect (for auto-connect). If not
                          specified, auto-connect is disabled.
  remote-port (pos. 1)    Remote port to connect (for auto-connect). If not
                          specified, auto-connect is disabled.

Example

multiplexer example.com 8080 -p 3333

Listens at localhost:3333 for client connections. Upon first client connection, automatically connects to remote server example.com:8080.

Introduction

This tool allows multiple TCP clients to share a single TCP connection to a server. Traffic generated by the server is forwarded to all clients. Traffic generated from any client is forwarded to the server.

This graph demonstrates the idea

How is it useful? In many cases, we want to write program to automate tasks with a remote service, but at the same time want to keep using the existing tool that doesn't offer the functionality that your automation program is capable of, but provides an easy/familiar UI, so that your automation program won't have to.

Performance

All TCP connections (server-multiplexer, multiplexer-clients) IO operations are completely non-blocking. I expect the traffic throughput to be very high.

Demo

Here's a demonstration of it in action. As an example, in this case, there're two MUD clients sharing the same connection to the server. Imagine one of the two clients is a thin program that automates your player, but provides no ability for human intervention. And the other client is a regular feature-rich MUD client that you can interact with.

demo