79 lines
1.6 KiB
Markdown
79 lines
1.6 KiB
Markdown
# Chatrooms
|
|
|
|
A collection of chatting rooms built with WebSocket technology.
|
|
|
|
## Overview
|
|
|
|
This project consists of a WebSocket server and web frontend for real-time chat functionality. The server implements a custom WebSocket protocol, and the frontend provides a simple web interface for connecting to chat rooms.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
chatrooms/
|
|
├── server/ # WebSocket server implementation
|
|
│ └── src/
|
|
│ ├── net/ # Network layer and WebSocket implementation
|
|
│ └── index.ts # Server entry point
|
|
├── frontend/web/ # Web frontend
|
|
│ └── src/
|
|
│ ├── main.ts # Frontend WebSocket client
|
|
│ └── style.css # Styles
|
|
└── package.json # Root workspace configuration
|
|
```
|
|
|
|
## Architecture
|
|
|
|
- **Server**: Node.js TypeScript server with custom WebSocket implementation
|
|
- **Frontend**: Vanilla TypeScript web client using Vite for development
|
|
- **Workspace**: Managed as npm workspaces for monorepo development
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js (version specified in `.nvmrc`)
|
|
- npm
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
## Development
|
|
|
|
### Start the server
|
|
```bash
|
|
npm run dev:server
|
|
```
|
|
|
|
The server will start on port 3000.
|
|
|
|
### Start the web frontend
|
|
```bash
|
|
npm run dev:web
|
|
```
|
|
|
|
### Linting
|
|
|
|
```bash
|
|
# Lint server code
|
|
npm run lint:server
|
|
|
|
# Lint and fix server code
|
|
npm run lint:fix:server
|
|
```
|
|
|
|
## Features
|
|
|
|
- Custom WebSocket server implementation
|
|
- Real-time bidirectional communication
|
|
- Connection management with keep-alive
|
|
- TypeScript throughout the stack
|
|
- Development tools with hot reload
|
|
|
|
## Author
|
|
|
|
Alexander Zinn
|
|
|
|
## License
|
|
|
|
ISC |