62 lines
1.5 KiB
Markdown
62 lines
1.5 KiB
Markdown
# rmtPocketWatcher - Electron Desktop App
|
|
|
|
Cross-platform desktop application for tracking AUEC RMT prices in real-time.
|
|
|
|
## WebSocket Implementation
|
|
|
|
The app uses a robust WebSocket client with the following features:
|
|
|
|
### Main Process (src/main/)
|
|
- **websocket-client.ts**: Core WebSocket client with auto-reconnect logic
|
|
- Exponential backoff reconnection (max 10 attempts)
|
|
- Event-based architecture for easy integration
|
|
- Connection state management
|
|
|
|
- **ipc-handlers.ts**: IPC bridge between main and renderer processes
|
|
- Forwards WebSocket events to renderer
|
|
- Handles renderer commands (connect/disconnect/send)
|
|
- Auto-connects on app startup
|
|
|
|
### Renderer Process (src/renderer/)
|
|
- **hooks/useWebSocket.ts**: React hook for WebSocket integration
|
|
- Manages connection status
|
|
- Provides latest price updates
|
|
- Exposes connect/disconnect/send methods
|
|
|
|
### Shared Types (src/shared/)
|
|
- **types.ts**: TypeScript interfaces shared between processes
|
|
- PriceIndex, VendorPrice, WebSocketMessage
|
|
- Ensures type safety across IPC boundary
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
## Development
|
|
|
|
```bash
|
|
# Start Vite dev server and Electron
|
|
npm run electron:dev
|
|
```
|
|
|
|
## Build
|
|
|
|
```bash
|
|
# Build for production
|
|
npm run electron:build
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
Copy `.env.example` to `.env` and configure:
|
|
- `WS_URL`: WebSocket server URL (default: ws://localhost:3000/ws)
|
|
|
|
## Security
|
|
|
|
- Context isolation enabled
|
|
- Sandbox mode enabled
|
|
- No remote code evaluation
|
|
- Secure IPC communication via preload script
|