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

network-observer

v0.0.6

Published

network observer

Downloads

14

Readme

介绍

  • 监听当前的网络是否 ok,并在网络变更时派发事件
  • 保障 socket 通信,自动心跳,自动重连,让业务无感知

快速开始

import getObserver from "network-observer";

const networkObserver = getObserver();

// 监听网络变化
networkObserver.on("change", isOnline => {
  console.log(`网络${isOnline ? "已恢复" : "已断开"}`);
});

// 同步获取网络最新状态
networkObserver.isOnline();

// 异步获取网络最新状态 (触发 ping)
networkObserver.getNetworkStatus().then(isOnline => {
  console.log(`网络${isOnline ? "正常" : "已断开"}`);
});

利用 socket 进行通信

import getObserver from "network-observer";

const networkObserver = getObserver({
  socket: "wss://xxx.com"
});

networkObserver.send("hello"); // 利用 socket 发送信息

networkObserver.on("message", data => {
  console.log(`收到信息`, data);
});

socket 配置支持传入回调,来动态生成

const networkObserver = getObserver({
  socket: () => `wss://xxx.com?sid=${sid}&token=${token}`
});

socket 的自我恢复机制

底层实现 socket 的保障,无需业务关心,其原理如下:

自动 ping

每隔特定时间,向服务端发出 ping 消息,一方面保持心跳,避免被后端释放,另一方面在 socket 通道出现问题时能即时发现并恢复

自动重连

当发现 socket 通道 close 时,自动重建,并能够「延续」上一个 socket 绑定的回调,无需业务关心

初始化参数

export interface IProps {
  pingUrl?: string; // 监测网络可用的 url
  checkInterval?: number; // 监测网络的间隔
  socket?: string | ISocketCreator; // 如需创建 socket 则可配置,支持字符串的 socket url,或者函数返回 url
}