@syeedalireza/bid-stream
v1.0.0
Published
Professional reverse auction package
Downloads
52
Readme
@syeedalireza/bid-stream
A high-performance WebSocket/Redis adapter optimized for broadcasting "lowest bid" updates in real-time reverse auctions.
Features
- Redis Pub/Sub: Leverages Redis for scalable, distributed message broadcasting.
- Event Emitter: Simple Node.js EventEmitter interface for handling incoming bids.
- Auction-Specific Channels: Automatically routes bids to specific auction channels.
- TypeScript Support: Fully typed with TypeScript.
Installation
npm install @syeedalireza/bid-stream ioredisUsage
import { BidStream } from '@syeedalireza/bid-stream';
// Initialize the stream
const stream = new BidStream({
redisUrl: 'redis://localhost:6379',
channelPrefix: 'auction:', // Optional, defaults to 'auction:'
});
// Subscribe to a specific auction
await stream.subscribeToAuction('auction-123');
// Listen for all bids
stream.on('bid', (bid) => {
console.log('Received bid:', bid);
});
// Listen for bids on a specific auction
stream.on('bid:auction-123', (bid) => {
console.log('Received bid for auction-123:', bid);
});
// Broadcast a new bid
await stream.broadcastBid({
auctionId: 'auction-123',
bidId: 'bid-1',
bidderId: 'user-1',
amount: 100,
timestamp: Date.now(),
});
// Cleanup when done
await stream.disconnect();API
BidStream
Constructor
new BidStream(config: BidStreamConfig)
config.redisUrl: Redis connection string.config.channelPrefix: Prefix for Redis channels (default:'auction:').
Methods
subscribeToAuction(auctionId: string): Promise<void>: Subscribes to updates for a specific auction.unsubscribeFromAuction(auctionId: string): Promise<void>: Unsubscribes from an auction.broadcastBid(bid: BidMessage): Promise<void>: Broadcasts a bid to all subscribers of that auction.disconnect(): Promise<void>: Closes Redis connections.
Events
'bid': Emitted for any received bid. Payload:BidMessage.'bid:[auctionId]': Emitted for bids specific toauctionId. Payload:BidMessage.'error': Emitted on JSON parsing errors or Redis errors. Payload:Error.
