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

@36node/whisper

v0.1.11

Published

A module for tcp framework, like kao for web.

Downloads

785

Readme

whisper

Inspired by koa.js, follow koa, great project.

TCP server framework, communicating in binary data.

NPM version NPM downloads CircleCI codecov donate

Install

yarn add whisper

Usage

import Whisper from "whisper";

const app = new Whisper();

app.listen(3456);

app.use(async (ctx, next) => {
  const buf = ctx.data;

  // handle request
  ctx.start = buf.toString("utf8", 0, 2);

  await next();

  // send data back to client
  // body could be string or buf
  // body also can be a stream, like file stream
  ctx.body = "haha";
});

app.use(async (ctx, next) => {
  await next();
  console.log(ctx.start);
});

逻辑在 中间件中写,通过 app.use 调用,整体采用和 KOA 一样的洋葱模型。

TODO: 补更多的 readme

API

Application 即 Whisper

Whisper()

构造函数,创建 Application

Whisper.listen(port)

启动 server,监听端口

Whisper.toJSON()

return json data

Whisper.use(fn)

使用中间件

其中 fn 即中间件

fn = (ctx, next) => { ... }

Whisper.broadcast(data, filt)

群发消息

  • data: string/buffer/json
  • filt: function 过滤符合条件的 sessions

filt:

fn = session => {
  return true;
};

Context

ctx.data

origin data from socket buffer

ctx.no

当前通讯 在会话中的位置序号

ctx.socket

net.Socket

参见 nodejs 文档

ctx.session

Session

同一个 socket 的连续数据传输组成一个会话

ctx.app

Application

Session

method Session.send(data)

发送数据到客户端

  • data: string, buffer or json

如果 socket.writable === false, 那么数据将不会发送

method Session.close()

关闭会话

Session.id

session 的唯一编号

Session.createdAt

session 创建的时间

Session.closedAt

session 关闭的时间

Session.app

Application

同 ctx.app

Session.socket

net.Socket

同 ctx.socket

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

whisper © 36node, Released under the MIT License.

Authored and maintained by 36node with help from contributors (list).

github.com/zzswang · GitHub @36node