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 🙏

© 2024 – Pkg Stats / Ryan Hefner

reflect-orchestrator

v0.0.6

Published

For some experiences it can be useful to limit the number of collaborators in a room.

Downloads

94

Readme

Problem

For some experiences it can be useful to limit the number of collaborators in a room.

Imagine a board game that has a limit of six players. If a seventh player tries to join, they should be put into a separate room. If a player leaves, the next player should take the empty spot.

Overflowing users into other rooms is complex because you don't want to have to try multiple rooms in sequence, as that would dramatically slow down connection. But you also don't want a bunch of mostly empty rooms.

Solution

reflect-orchestrator maintains a dedicated room just for the purpose of distributing users. It keeps precise track of which users are in which rooms so that it can completely fill rooms before overflowing. Only one round trip to the orchestrator is required before a user can connect to their assigned rooms.

reflect-orchestrator handles all the ways in which a user could leave a room including tab-close, tab-switch, navigation, offline, and crashes.

Demo

https://orchestrate.reflect.net/

Open this URL in multiple incognito windows. Each connection is assigned a unique client number between 0 and limit-1. The client number can be used to assign clients cursor colors, avatars, etc.

In this demo the max clients per room is configured to 5. If more than five clients are present together, the sixth client will overflow into a new room.

Installation

npm install reflect-orchestrator

Running the Example

  1. Clone this repo

    git clone [email protected]:rocicorp/reflect-orchestrator.git
    cd reflect-orchestrator
  2. Install dependencies

    npm install
  3. Build the project

    npm run build
  4. Navigate to the example directory

    cd examples/basic
  5. Start the example

    npm run watch

Publishing Your Project

To publish your project with Reflect and deploy the UI:

  1. Publish the Reflect server

    npx reflect publish
  2. Deploy the UI (Example: using Vercel)

    npx vercel