# WebSocket 聊天服务器

基于 Node.js、Express 和 WebSocket 实现的实时聊天服务器。

## 功能特性

- 支持群聊和私聊
- 在线用户列表
- 消息历史记录
- 心跳检测
- 自动断开超时连接
- CORS 跨域支持
- 健康检查接口

## 安装依赖

1. 进入项目目录：
```bash
cd chat-server
```

2. 安装依赖：
```bash
npm install
```

## 配置

1. 复制环境变量示例文件：
```bash
cp .env.example .env
```

2. 根据需要修改 `.env` 文件中的配置：
- `CHAT_SERVER_PORT`：服务器监听端口（默认3100）
- `ALLOWED_ORIGINS`：允许连接的前端域名，多个域名用逗号分隔
- `DEBUG`：是否启用调试模式

## 启动服务器

### 开发模式

使用 nodemon 启动服务器，支持代码修改自动重启：
```bash
npm run dev
```

### 生产模式

直接启动服务器：
```bash
npm start
```

## 健康检查

服务器启动后，可以通过访问 `http://localhost:3100/health` 检查服务器状态。

## WebSocket 客户端集成

1. 连接服务器：
```javascript
const ws = new WebSocket('ws://localhost:3100')
```

2. 消息格式：
```javascript
// 发送聊天消息（群发）
ws.send(JSON.stringify({
    type: 'chat',
    content: '消息内容'
}))

// 发送私聊消息
ws.send(JSON.stringify({
    type: 'chat',
    to: { id: '目标用户ID', name: '目标用户名称' },
    content: '私聊消息内容'
}))

// 更新用户信息
ws.send(JSON.stringify({
    type: 'user',
    action: 'update',
    name: '新的用户名'
}))

// 发送心跳
ws.send(JSON.stringify({
    type: 'ping'
}))
```

3. 接收消息：
```javascript
ws.onmessage = (event) => {
    const message = JSON.parse(event.data)
    switch (message.type) {
        case 'chat':
            // 处理聊天消息
            break
        case 'system':
            // 处理系统消息（用户加入/离开、用户列表更新等）
            break
        case 'pong':
            // 处理心跳响应
            break
    }
}
```