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

@mt-utils/mt-sse

v1.0.6

Published

明途SSE请求工具

Downloads

108

Readme

@mt-utils/mt-sse

@mt-utils/mt-sse 是一个用于处理服务器发送事件(Server-Sent Events,SSE)的 TypeScript 库,它提供了一个简单易用的接口来管理和监听来自服务器的事件。

特点

  • 支持服务器发送事件(SSE)的客户端实现。
  • 提供了详细的错误处理和状态码管理。
  • 支持自定义请求头、请求方法和事件监听。
  • 错误回调中包含错误代码,方便问题定位。

安装

使用 pnpm 安装:

pnpm install @mt-utils/mt-sse

使用方法

基本使用

import SSEClient from '@mt-utils/mt-sse'
import type { SSEClientOptions } from '@mt-utils/mt-sse'

/**
 * 配置选项,所有配置项都是可选的,并且有默认值
 */
const options: SSEClientOptions = {
  /**
   *  请求头,默认参数为{cache-control:no-cache,Connection:keep-alive,content-type:application/json,Language:zh}
   */
  headers: {
    /**
     * 指定请求和响应遵循的缓存机制,默认为no-cache
     */
    'cache-control': 'no-cache',
    /**
     * 指定连接是否应该在此次请求之后保持打开状态,默认为keep-alive
     */
    Connection: 'keep-alive',
    /**
     * 描述了主体部分的内容类型,默认为application/json
     */
    'content-type': 'application/json',
    /**
     * 用来指示资源的内容所用的语言,默认为ZH
     */
    Language: 'zh'
  },
  /**
   * 请求方法,默认为 POST
   * @default POST
   * @type string
   */
  method: 'POST'
}

/**
 * 创建一个 SSE 客户端实例
 */
const client = new SSEClient('https://yourserver.com/sse', options)

/**
 * 监听连接打开,SSE连接打开并且成功连接到服务器后触发;
 * 开始连接,回调参数为连接成功后的response
 */
client.on('start', (response) => {
  console.log('SSE connection opened', response)
})

/**
 * 监听接收消息
 * 接收到服务器返回的消息(返回对象type为112时触发),回调参数为返回的数据对象
 */
client.on('message', (data) => {
  console.log('Received message:', data)
})

/**
 * 监听连接结束
 * 接收到最后一条数据(返回对象type为114时触发),回调参数为返回的数据对象
 */
client.on('end', (data) => {
  console.log('SSE connection ended:', data)
})

/**
 * 监听连接异常
 * 连接错误,回调参数为SSEError对象
 */
client.on('error', (error) => {
  console.error(`SSE error: ${error.message}`)
})

/**
 * 连接关闭,每次正常连接完毕都会触发,无回调参数
 */
client.on('close', () => {
  console.log('SSE connection closed')
})

// 发送消息
client.send({ key: 'value' })

// 主动关闭 SSE 连接
client.closeSSE()

Options 配置

SSEClient 构造函数接受一个可选的 options 对象,允许你自定义连接的行为。所有配置项都是可选的,并且有默认值:

  • headers: 自定义请求头,包含默认值,可以覆盖或扩展默认值。默认值:
    {
      'cache-control': 'no-cache',
      Connection: 'keep-alive',
      'content-type': 'application/json',
      Language: 'zh'
    }
  • method: 请求方法,默认为 'POST',可选 'GET', 'DELETE', 'PUT'

事件监听

  • start: 当SSE连接打开时触发。
  • message: 当接收到消息时触发。
  • end: 当接收到结束标记(状态码 114)时触发。
  • error: 当发生错误时触发,错误对象包含 message 属性。
  • close: 当SSE连接关闭时触发。

状态码

  • NORMAL: 正常消息,状态码 112
  • BAN: 用户被禁用,状态码 100
  • END: 连接结束,状态码 114

错误处理

错误处理通过 SSEError 类实现,它提供了不同的错误代码来表示不同的错误类型:

| 错误代码 | 描述 | | -------- | ---------------- | | 4001 | 浏览器不支持 SSE | | 4002 | SSE 执行错误 | | 4003 | SSE 连接错误 | | 4004 | 未知错误 | | 4005 | 用户被停用 |

注意

本库为内部工具库,仅供特定用途使用。在使用前,请确保你了解其用途和限制,并在遇到问题时寻求适当的支持。