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 🙏

© 2025 – Pkg Stats / Ryan Hefner

stream-telephone-client

v1.0.0

Published

A bit of a helper library to play telephone with streams

Downloads

5

Readme

Stream Telephone Client

A small helper library for playing telephone with streams

This goes in conjunction with the stream-telephone server that (hasn't yet, but will be soon) open sourced

Playing the game

In the game of telephone, a group of people form a chain and whisper a message down the chain. Most times, this message gets pretty garbled.

This is kinda like that... but with tcp servers and deliberate changes via a stream.

For this to work, you will need to implement a few things:

  1. A transform stream ([https://nodejs.org/api/stream.html#stream_class_stream_transform](Transform Stream)) to tweak the message
  2. A TCP client to connect to the person to get the message from
  3. A TCP server for the next person in the chain to get the message from

This library just takes care of communicating both who you need to connect to and how the next person connects to you!

API

This library exports a single Class

var TelephoneClient = require('stream-telephone-client')
// the TCP port your server will listen on
var myPort = 8090
// the central telephone server that co-ordinates games
var serverInfo = {host: '1.2.3.4', port: 3001}
var client = new TelephoneClient(serverInfo, 'nameOfGame', 'playerName', myPort)
client.on('connectTo', function(connectionInfo) {
  // connectionInfo.ip and connectionInfo.port give details of who you need to
  // connect to to get the message
  // This event may fire multiple times, but only the

})

Getting a port

TelephoneClient.getPort() can be used to get a random port, which can be useful

Multiple connectTo events

As the players change, it is possible you may get multiple connectTo events. The last of those events is the only one you should worry about connecting to (i.e. close all your other connections).

Retries

This library also takes care of reconnecting to central telephone server if it goes down or if the game isn't ready yet, so you should be able to jsut keep things running