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

sockettes

v0.2.3

Published

Smoothly choreograph your WebSocket connections

Downloads

8

Readme

Sockettes

Smoothly choreograph your WebSocket connections

rockettes

A WebSocket wrapper which will only allow one WebSocket connection per browser session (no matter how many tabs). All browser tabs will communicate through the WebSocket on the designated "master" tab.

If one tab tries to close a WebSocket while other tabs are still using it, the WebSocket will remain open. Only until all tabs call close will the WebSocket actually be closed no matter which tab actually is maintaining the WebSocket connection.

It uses the crosstab library under the covers for browser tab communication.

Browser Support

It supports all browsers that support WebSocket. Generally, this is IE 10+. On mobile, the library will fall back to using normal WebSocket connections rather than trying to do tab communication.

Usage

npm install sockettes --save

Hello, World Example

import Sockette from "sockettes";

var socket = new Sockette("wss://myurl.example.com/");

socket.addListener("opened", () => {
	console.log("socket is opened");

	socket.send({
		hello: "world"
	}); //this will be JSON serialized and sent to the server
});

socket.addListener("closed", () => console.log("socket is closed"));

socket.addListener("message", msg => console.log(msg)); //JSON from the server is parsed

socket.open();

Run that example with multiple tabs open (and connected to a websocket server that will respond appropriately) and watch how only one tab actually maintains the websocket connection.

The Sockette class is an EventEmitter (specifically an EventEmitter3), so you can use any of addListener, on, once, removeListener, etc. on the Sockette instance.

Auto-reconnecting WebSocket Example

import Sockette from "sockettes";

var socket = new Sockette("wss://myurl.example.com/");

socket.addListener("opened", () => console.log("socket is opened"));

socket.addListener("closed", () => {
	console.log("socket is closed; reconnecting");
	socket.open();
});

socket.open();
setTimeout(() => socket.close(), 5000);

Only one browser tab will reconnect to the server after the connection is closed. All tabs, however, will log to the console as if each tab had its own connection.