next-debug-suite
Version:
Ultimate Next.js AI-Powered Debug Suite with visual interface and error DNA system
301 lines (254 loc) • 5.94 kB
Markdown
# Network Monitoring
The Network Monitoring system provides comprehensive tracking and analysis of all network requests in your Next.js application, including API calls, static asset loading, and data fetching.
## Features
- 🌐 Real-time request tracking
- 📊 Performance analytics
- 🔍 Request/Response inspection
- ⚠️ Error detection
- 📈 Visual timeline
- 🔄 WebSocket monitoring
## Usage
### Basic Setup
```typescript
import { DebugSuiteProvider } from 'nextjs-debug-suite';
const config = {
monitors: {
network: {
enabled: true,
includeHeaders: true,
includeBodies: true,
maxEntries: 100,
ignorePatterns: [
'/api/health',
'/_next/static/.*',
],
},
},
};
function MyApp({ Component, pageProps }) {
return (
<DebugSuiteProvider config={config}>
<Component {...pageProps} />
</DebugSuiteProvider>
);
}
```
### Request Tracking
```typescript
import { useNetworkMonitor } from 'nextjs-debug-suite';
function MyComponent() {
const network = useNetworkMonitor();
const fetchData = async () => {
const trackingId = network.trackRequest({
url: '/api/data',
method: 'GET',
tags: ['data-fetch', 'critical'],
});
try {
const response = await fetch('/api/data');
const data = await response.json();
return data;
} catch (error) {
network.markRequestFailed(trackingId, error);
throw error;
}
};
return <button onClick={fetchData}>Fetch Data</button>;
}
```
### WebSocket Monitoring
```typescript
import { useNetworkMonitor } from 'nextjs-debug-suite';
function WebSocketComponent() {
const network = useNetworkMonitor();
useEffect(() => {
const ws = new WebSocket('wss://api.example.com');
const cleanup = network.trackWebSocket(ws, {
name: 'MainWebSocket',
tags: ['realtime', 'chat'],
});
return () => {
cleanup();
ws.close();
};
}, []);
return <div>WebSocket Component</div>;
}
```
## Network Metrics
### 1. Request Metrics
```typescript
interface RequestMetrics {
id: string;
url: string;
method: string;
startTime: number;
endTime?: number;
duration?: number;
status?: number;
size?: number;
type: 'xhr' | 'fetch' | 'websocket';
tags?: string[];
}
```
### 2. Response Metrics
```typescript
interface ResponseMetrics {
status: number;
statusText: string;
headers: Record<string, string>;
size: number;
type: string;
duration: number;
cached: boolean;
}
```
### 3. Error Metrics
```typescript
interface ErrorMetrics {
type: 'network' | 'timeout' | 'abort' | 'parse';
message: string;
code?: string;
details?: any;
retries?: number;
}
```
## Visual Features
### 1. Network Timeline
- Request waterfall
- Duration visualization
- Concurrent requests
- Resource types
- Error indicators
### 2. Request Details
- Headers inspection
- Payload viewer
- Response preview
- Timing breakdown
- Cookie information
### 3. Analytics Dashboard
- Request volume
- Success rates
- Average latency
- Bandwidth usage
- Error distribution
## Configuration
```typescript
interface NetworkConfig {
enabled: boolean;
maxEntries: number;
tracking: {
includeHeaders: boolean;
includeBodies: boolean;
maxBodySize: number; // bytes
ignorePatterns: string[];
includeCookies: boolean;
};
websocket: {
enabled: boolean;
trackMessages: boolean;
maxMessageSize: number; // bytes
};
performance: {
slowRequestThreshold: number; // ms
timeoutThreshold: number; // ms
retryTracking: boolean;
};
visualization: {
realtime: boolean;
maxTimelineItems: number;
groupSimilarRequests: boolean;
theme: {
success: string;
error: string;
warning: string;
info: string;
};
};
}
```
## Best Practices
### 1. Development Configuration
```typescript
const config = {
monitors: {
network: {
enabled: true,
includeHeaders: true,
includeBodies: true,
tracking: {
ignorePatterns: [
'/api/health',
'/_next/static/.*',
'\\.hot-update\\.json$',
],
},
},
},
};
```
### 2. Production Configuration
```typescript
const config = {
monitors: {
network: {
enabled: true,
includeHeaders: false,
includeBodies: false,
maxEntries: 50,
performance: {
slowRequestThreshold: 1000,
timeoutThreshold: 5000,
},
},
},
};
```
### 3. Critical Path Monitoring
```typescript
const config = {
monitors: {
network: {
enabled: true,
criticalPaths: {
'/api/checkout': {
timeout: 3000,
retries: 3,
priority: 'high',
},
'/api/auth': {
timeout: 2000,
retries: 2,
priority: 'high',
},
},
},
},
};
```
## Security Considerations
1. **Sensitive Data**
- Filter authentication headers
- Mask sensitive form data
- Exclude security tokens
2. **Data Storage**
- Limit response storage
- Clear sensitive data
- Implement data expiry
3. **Access Control**
- Restrict debug access
- Implement role-based viewing
- Secure WebSocket monitoring
## Troubleshooting
1. **High Memory Usage**
- Reduce maxEntries
- Disable body tracking
- Implement aggressive filtering
2. **Performance Impact**
- Increase filtering
- Reduce tracking detail
- Disable real-time updates
3. **Missing Requests**
- Check ignorePatterns
- Verify tracking setup
- Review browser support