pump-chat-client
Version:
WebSocket client for connecting to pump.fun token chat rooms
120 lines (90 loc) • 3.12 kB
Markdown
# pump-chat-client
A WebSocket client library for connecting to pump.fun token chat rooms. This library handles the socket.io protocol communication and provides an easy-to-use interface for reading chat messages.
## Installation
```bash
npm install pump-chat-client
```
## Usage
```typescript
import { PumpChatClient } from 'pump-chat-client';
// Create a new client instance
const client = new PumpChatClient({
roomId: 'YOUR_TOKEN_ADDRESS',
username: 'your-username',
messageHistoryLimit: 100
});
// Set up event listeners
client.on('connected', () => {
console.log('Connected to pump.fun chat!');
});
client.on('message', (message) => {
console.log(`${message.username}: ${message.message}`);
});
client.on('messageHistory', (messages) => {
console.log(`Received ${messages.length} historical messages`);
});
client.on('error', (error) => {
console.error('Chat error:', error);
});
client.on('disconnected', () => {
console.log('Disconnected from chat');
});
// Connect to the chat room
client.connect();
// Send a message (requires authentication)
client.sendMessage('Hello everyone!');
// Get stored messages
const messages = client.getMessages(10); // Get last 10 messages
const latestMessage = client.getLatestMessage();
// Disconnect when done
client.disconnect();
```
## Features
- **Automatic reconnection** with exponential backoff
- **Socket.io protocol support** with acknowledgment tracking
- **Message history** management with configurable limits
- **Event-driven architecture** using EventEmitter
- **TypeScript support** with full type definitions
## API
### Constructor Options
```typescript
interface PumpChatClientOptions {
roomId: string; // Token address/room ID
username?: string; // Username (default: 'anonymous')
messageHistoryLimit?: number; // Max messages to store (default: 100)
}
```
### Events
- `connected` - Emitted when successfully connected
- `message` - Emitted when a new message is received
- `messageHistory` - Emitted when message history is received
- `error` - Emitted on connection or protocol errors
- `serverError` - Emitted on server-side errors
- `disconnected` - Emitted when disconnected
- `userLeft` - Emitted when a user leaves the chat
- `maxReconnectAttemptsReached` - Emitted after max reconnection attempts
### Methods
- `connect()` - Connect to the chat room
- `disconnect()` - Disconnect from the chat room
- `sendMessage(message: string)` - Send a message (requires authentication)
- `getMessages(limit?: number)` - Get stored messages
- `getLatestMessage()` - Get the most recent message
- `isActive()` - Check if connected
## Message Interface
```typescript
interface IMessage {
id: string;
roomId: string;
username: string;
userAddress: string;
message: string;
profile_image: string;
timestamp: string;
messageType: string;
expiresAt: number;
}
```
## Authentication
Note: Sending messages requires authentication with pump.fun. You need to be logged in to pump.fun in a browser and have valid session cookies. Reading messages works without authentication.
## License
MIT