UNPKG

ws402

Version:

WebSocket implementation of X402 protocol for pay-as-you-go digital resources with automatic refunds

55 lines (54 loc) 1.6 kB
import WebSocket from 'ws'; import { EventEmitter } from 'events'; import { WS402Config, WS402Session, PaymentProvider, WS402Schema } from './types'; /** * WS402 - WebSocket implementation of X402 protocol * Enables pay-as-you-go pricing for WebSocket resources with automatic refunds */ export declare class WS402 extends EventEmitter { private sessions; private config; private paymentProvider; constructor(config: WS402Config, paymentProvider: PaymentProvider); /** * Attach WS402 to a WebSocket server */ attach(wss: WebSocket.Server): Map<string, WebSocket>; /** * Generate WS402 schema for initial HTTP response * @param pricePerSecond - Optional custom price per second, uses config default if not provided */ generateSchema(resourceId: string, estimatedDuration: number, pricePerSecond?: number): WS402Schema; /** * Handle new WebSocket connection */ private handleConnection; /** * Wait for client to send payment proof */ private waitForPaymentProof; /** * Update session usage and check limits */ private updateUsage; /** * End session and issue refund */ private endSession; /** * Get active session by user ID */ getSessionByUserId(userId: string): WS402Session | null; /** * Get all active sessions */ getActiveSessions(): WS402Session[]; /** * Default user ID extractor from request */ private defaultUserIdExtractor; /** * Generate unique session ID */ private generateSessionId; }