wx-sse-client
v1.0.0
Published
SSE client for WeChat mini-program and browser environments
Maintainers
Readme
wx-sse-client
SSE (Server-Sent Events) client for WeChat mini-program and browser environments.
Features
- Works in both WeChat mini-program and browser
- Automatic environment detection
- Built-in reconnection with configurable interval
- Room-based message routing
- TypeScript support
- Zero dependencies
Installation
npm install wx-sse-clientQuick Start
Browser
import { createBrowserSSEClient } from 'wx-sse-client'
const client = createBrowserSSEClient({
baseUrl: 'https://api.example.com',
getToken: () => localStorage.getItem('token'),
getSseId: () => 'user-123',
})
client.start()
client.on('message', (data) => {
console.log('Received:', data)
})WeChat Mini-Program
import { createWxSSEClient } from 'wx-sse-client'
const client = createWxSSEClient({
baseUrl: 'https://api.example.com',
getToken: () => getApp().globalData.token,
getSseId: () => wx.getStorageSync('unionId'),
wxRequest: wx.request,
})
client.start()
client.on('message', (data) => {
console.log('Received:', data)
})Auto-Detection
import { createSSEClient } from 'wx-sse-client'
// Automatically detects environment
const client = createSSEClient({
baseUrl: 'https://api.example.com',
getToken: () => 'token',
getSseId: () => 'id',
})API
createSSEClient(options)
Creates an SSE client with automatic environment detection.
createWxSSEClient(options)
Creates an SSE client specifically for WeChat mini-program.
createBrowserSSEClient(options)
Creates an SSE client specifically for browser environment.
Options
interface SSEClientOptions {
baseUrl: string // API base URL
getToken: () => string | null | undefined // Function to get auth token
getSseId: () => string // Function to get SSE client ID
reconnectInterval?: number // Reconnect interval in ms (default: 5000)
maxReconnectAttempts?: number // Max reconnect attempts before giving up
}Client Methods
client.start() // Start SSE connection
client.stop() // Stop SSE connection
client.join(roomName) // Join a room
client.leave(roomName) // Leave a room
client.on(event, handler) // Add event listener
client.off(event, handler) // Remove event listener
client.isConnected() // Check connection statusLicense
MIT
