588 lines
15 KiB
Markdown
588 lines
15 KiB
Markdown
|
|
# HTTP 服务器配置
|
||
|
|
|
||
|
|
<cite>
|
||
|
|
**本文档引用的文件**
|
||
|
|
- [src/index.ts](file://src/index.ts)
|
||
|
|
- [src/server.ts](file://src/server.ts)
|
||
|
|
- [src/class/options.ts](file://src/class/options.ts)
|
||
|
|
- [src/class/httphandler.ts](file://src/class/httphandler.ts)
|
||
|
|
- [src/signaling.ts](file://src/signaling.ts)
|
||
|
|
- [src/websocket.ts](file://src/websocket.ts)
|
||
|
|
- [src/swagger.ts](file://src/swagger.ts)
|
||
|
|
- [src/log.ts](file://src/log.ts)
|
||
|
|
- [package.json](file://package.json)
|
||
|
|
- [run.bat](file://run.bat)
|
||
|
|
- [server.cert](file://server.cert)
|
||
|
|
</cite>
|
||
|
|
|
||
|
|
## 目录
|
||
|
|
1. [简介](#简介)
|
||
|
|
2. [项目结构](#项目结构)
|
||
|
|
3. [核心组件](#核心组件)
|
||
|
|
4. [架构概览](#架构概览)
|
||
|
|
5. [详细组件分析](#详细组件分析)
|
||
|
|
6. [HTTPS 服务器配置](#https-服务器配置)
|
||
|
|
7. [CORS 配置](#cors-配置)
|
||
|
|
8. [日志记录中间件](#日志记录中间件)
|
||
|
|
9. [错误处理机制](#错误处理机制)
|
||
|
|
10. [性能优化建议](#性能优化建议)
|
||
|
|
11. [安全配置最佳实践](#安全配置最佳实践)
|
||
|
|
12. [配置示例](#配置示例)
|
||
|
|
13. [故障排除指南](#故障排除指南)
|
||
|
|
14. [结论](#结论)
|
||
|
|
|
||
|
|
## 简介
|
||
|
|
|
||
|
|
本项目是一个基于 Node.js 和 Express 的 WebRTC 信令服务器,提供了完整的 HTTP 和 WebSocket 服务器配置功能。该系统支持 HTTPS 加密传输、CORS 跨域资源共享、详细的日志记录、文件上传处理以及 RESTful API 接口。系统采用模块化设计,支持公共模式和私有模式两种通信方式,适用于视频流媒体应用的信令传输需求。
|
||
|
|
|
||
|
|
## 项目结构
|
||
|
|
|
||
|
|
该项目采用清晰的模块化架构,主要包含以下核心目录和文件:
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TB
|
||
|
|
subgraph "项目根目录"
|
||
|
|
A[package.json] --> B[src/]
|
||
|
|
C[client/] --> D[public/]
|
||
|
|
E[client/src/] --> F[测试文件]
|
||
|
|
G[test/] --> H[单元测试]
|
||
|
|
end
|
||
|
|
subgraph "源代码目录 (src/)"
|
||
|
|
B --> I[index.ts]
|
||
|
|
B --> J[server.ts]
|
||
|
|
B --> K[class/]
|
||
|
|
B --> L[websocket.ts]
|
||
|
|
B --> M[signaling.ts]
|
||
|
|
B --> N[swagger.ts]
|
||
|
|
B --> O[log.ts]
|
||
|
|
subgraph "class/"
|
||
|
|
K --> P[options.ts]
|
||
|
|
K --> Q[httphandler.ts]
|
||
|
|
K --> R[websockethandler.ts]
|
||
|
|
K --> S[offer.ts]
|
||
|
|
K --> T[answer.ts]
|
||
|
|
K --> U[candidate.ts]
|
||
|
|
end
|
||
|
|
end
|
||
|
|
subgraph "客户端资源"
|
||
|
|
D --> V[HTML页面]
|
||
|
|
D --> W[CSS样式]
|
||
|
|
D --> X[JavaScript文件]
|
||
|
|
E --> Y[源代码文件]
|
||
|
|
end
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/index.ts:1-109](file://src/index.ts#L1-L109)
|
||
|
|
- [src/server.ts:1-90](file://src/server.ts#L1-L90)
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/index.ts:1-109](file://src/index.ts#L1-L109)
|
||
|
|
- [src/server.ts:1-90](file://src/server.ts#L1-L90)
|
||
|
|
|
||
|
|
## 核心组件
|
||
|
|
|
||
|
|
### 服务器启动器 (RenderStreaming)
|
||
|
|
|
||
|
|
`RenderStreaming` 类是整个应用程序的入口点,负责解析命令行参数、创建 Express 应用程序、配置 HTTPS 服务器以及启动 WebSocket 信令服务。
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
classDiagram
|
||
|
|
class RenderStreaming {
|
||
|
|
+Options options
|
||
|
|
+Application app
|
||
|
|
+Server server
|
||
|
|
+run(argv) RenderStreaming
|
||
|
|
+constructor(options)
|
||
|
|
+getIPAddress() string[]
|
||
|
|
}
|
||
|
|
class Options {
|
||
|
|
+boolean secure
|
||
|
|
+number port
|
||
|
|
+string keyfile
|
||
|
|
+string certfile
|
||
|
|
+string type
|
||
|
|
+string mode
|
||
|
|
+string logging
|
||
|
|
}
|
||
|
|
class WSSignaling {
|
||
|
|
+Server server
|
||
|
|
+WebSocketServer wss
|
||
|
|
+constructor(server, mode)
|
||
|
|
}
|
||
|
|
RenderStreaming --> Options : 使用
|
||
|
|
RenderStreaming --> WSSignaling : 启动
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/index.ts:13-109](file://src/index.ts#L13-L109)
|
||
|
|
- [src/class/options.ts:1-10](file://src/class/options.ts#L1-L10)
|
||
|
|
|
||
|
|
### Express 应用程序配置
|
||
|
|
|
||
|
|
Express 应用程序通过 `createServer` 函数进行配置,集成了多种中间件和路由处理功能。
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/index.ts:52-109](file://src/index.ts#L52-L109)
|
||
|
|
- [src/server.ts:14-89](file://src/server.ts#L14-L89)
|
||
|
|
|
||
|
|
## 架构概览
|
||
|
|
|
||
|
|
系统采用双服务器架构,同时支持 HTTP 和 WebSocket 协议:
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TB
|
||
|
|
subgraph "客户端层"
|
||
|
|
A[Web浏览器]
|
||
|
|
B[移动应用]
|
||
|
|
C[桌面应用]
|
||
|
|
end
|
||
|
|
subgraph "服务器层"
|
||
|
|
D[HTTP服务器]
|
||
|
|
E[HTTPS服务器]
|
||
|
|
F[WebSocket服务器]
|
||
|
|
subgraph "Express中间件"
|
||
|
|
G[Morgan日志]
|
||
|
|
H[CORS跨域]
|
||
|
|
I[JSON解析]
|
||
|
|
J[静态资源]
|
||
|
|
K[文件上传]
|
||
|
|
end
|
||
|
|
subgraph "业务逻辑层"
|
||
|
|
L[HTTP信令处理器]
|
||
|
|
M[WebSocket信令处理器]
|
||
|
|
N[会话管理器]
|
||
|
|
end
|
||
|
|
end
|
||
|
|
subgraph "外部服务"
|
||
|
|
O[WebRTC客户端]
|
||
|
|
P[API消费者]
|
||
|
|
Q[文件存储]
|
||
|
|
end
|
||
|
|
A --> D
|
||
|
|
B --> E
|
||
|
|
C --> F
|
||
|
|
D --> G
|
||
|
|
E --> G
|
||
|
|
F --> M
|
||
|
|
G --> L
|
||
|
|
H --> L
|
||
|
|
I --> L
|
||
|
|
J --> L
|
||
|
|
K --> L
|
||
|
|
L --> N
|
||
|
|
M --> N
|
||
|
|
N --> O
|
||
|
|
L --> P
|
||
|
|
K --> Q
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/index.ts:55-88](file://src/index.ts#L55-L88)
|
||
|
|
- [src/server.ts:18-41](file://src/server.ts#L18-L41)
|
||
|
|
|
||
|
|
## 详细组件分析
|
||
|
|
|
||
|
|
### HTTP 服务器配置
|
||
|
|
|
||
|
|
HTTP 服务器通过 Express 框架实现,配置了完整的中间件栈和路由系统。
|
||
|
|
|
||
|
|
#### 中间件配置流程
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
flowchart TD
|
||
|
|
Start([服务器启动]) --> CreateApp["创建Express应用"]
|
||
|
|
CreateApp --> ConfigLogging["配置日志中间件<br/>morgan(config.logging)"]
|
||
|
|
ConfigLogging --> EnableCORS["启用CORS<br/>允许所有来源"]
|
||
|
|
EnableCORS --> ParseBody["配置请求体解析<br/>JSON和URL编码"]
|
||
|
|
ParseBody --> SetupRoutes["设置路由处理"]
|
||
|
|
SetupRoutes --> StaticFiles["配置静态资源<br/>客户端文件"]
|
||
|
|
StaticFiles --> UploadConfig["配置文件上传<br/>Multer中间件"]
|
||
|
|
UploadConfig --> SwaggerInit["初始化Swagger文档"]
|
||
|
|
SwaggerInit --> Ready([服务器就绪])
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/server.ts:18-41](file://src/server.ts#L18-L41)
|
||
|
|
|
||
|
|
#### 路由系统架构
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph LR
|
||
|
|
subgraph "根路由 (/)"
|
||
|
|
A[GET /] --> B[返回主页]
|
||
|
|
C[GET /config] --> D[返回服务器配置]
|
||
|
|
end
|
||
|
|
subgraph "信令路由 (/signaling)"
|
||
|
|
E[子路由] --> F[HTTP信令处理器]
|
||
|
|
G[/connection] --> H[连接管理]
|
||
|
|
I[/offer] --> J[Offer消息处理]
|
||
|
|
K[/answer] --> L[Answer消息处理]
|
||
|
|
M[/candidate] --> N[Candidate消息处理]
|
||
|
|
end
|
||
|
|
subgraph "静态资源"
|
||
|
|
O[public/] --> P[HTML/CSS/JS]
|
||
|
|
Q[/module] --> R[源代码文件]
|
||
|
|
S[/uploads] --> T[用户上传文件]
|
||
|
|
end
|
||
|
|
subgraph "API文档"
|
||
|
|
U[Swagger UI] --> V[在线API文档]
|
||
|
|
end
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/server.ts:25-41](file://src/server.ts#L25-L41)
|
||
|
|
- [src/signaling.ts:4-24](file://src/signaling.ts#L4-L24)
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/server.ts:14-89](file://src/server.ts#L14-L89)
|
||
|
|
- [src/signaling.ts:1-25](file://src/signaling.ts#L1-L25)
|
||
|
|
|
||
|
|
### WebSocket 服务器配置
|
||
|
|
|
||
|
|
WebSocket 服务器提供实时双向通信能力,支持 WebRTC 信令传输。
|
||
|
|
|
||
|
|
#### WebSocket 连接处理流程
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
sequenceDiagram
|
||
|
|
participant Client as 客户端
|
||
|
|
participant WS as WebSocket服务器
|
||
|
|
participant Handler as 信令处理器
|
||
|
|
participant Session as 会话管理器
|
||
|
|
Client->>WS : 建立WebSocket连接
|
||
|
|
WS->>Handler : 触发connection事件
|
||
|
|
Handler->>Session : 添加新连接
|
||
|
|
Handler->>Client : 发送connect确认
|
||
|
|
loop 信令消息循环
|
||
|
|
Client->>Handler : 发送信令消息
|
||
|
|
Handler->>Handler : 解析消息类型
|
||
|
|
alt offer消息
|
||
|
|
Handler->>Session : 存储Offer
|
||
|
|
Handler->>Client : 广播Offer
|
||
|
|
else answer消息
|
||
|
|
Handler->>Session : 存储Answer
|
||
|
|
Handler->>Client : 转发Answer
|
||
|
|
else candidate消息
|
||
|
|
Handler->>Session : 存储Candidate
|
||
|
|
Handler->>Client : 转发Candidate
|
||
|
|
end
|
||
|
|
end
|
||
|
|
Client->>WS : 断开连接
|
||
|
|
WS->>Handler : 触发close事件
|
||
|
|
Handler->>Session : 移除连接
|
||
|
|
Handler->>Client : 发送断开通知
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/websocket.ts:27-115](file://src/websocket.ts#L27-L115)
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/websocket.ts:1-118](file://src/websocket.ts#L1-L118)
|
||
|
|
|
||
|
|
### 会话管理器
|
||
|
|
|
||
|
|
会话管理器负责维护客户端连接状态和信令消息队列。
|
||
|
|
|
||
|
|
#### 会话状态管理
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
stateDiagram-v2
|
||
|
|
[*] --> 会话创建
|
||
|
|
会话创建 --> 连接等待 : 创建会话
|
||
|
|
连接等待 --> Offer发送 : 连接建立
|
||
|
|
Offer发送 --> Answer接收 : 发送Offer
|
||
|
|
Answer接收 --> Candidate交换 : 接收Answer
|
||
|
|
Candidate交换 --> 信令完成 : 交换Candidate
|
||
|
|
信令完成 --> 连接断开 : 通话结束
|
||
|
|
连接断开 --> [*]
|
||
|
|
state 连接等待 {
|
||
|
|
[*] --> 等待参与者
|
||
|
|
等待参与者 --> 等待Offer : 收到连接
|
||
|
|
等待Offer --> Offer发送 : 收到Offer
|
||
|
|
}
|
||
|
|
state 信令完成 {
|
||
|
|
[*] --> 保持连接
|
||
|
|
保持连接 --> Candidate交换 : 有新Candidate
|
||
|
|
Candidate交换 --> 保持连接 : Candidate同步
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/class/httphandler.ts:110-120](file://src/class/httphandler.ts#L110-L120)
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/class/httphandler.ts:106-120](file://src/class/httphandler.ts#L106-L120)
|
||
|
|
|
||
|
|
## HTTPS 服务器配置
|
||
|
|
|
||
|
|
### SSL 证书配置
|
||
|
|
|
||
|
|
HTTPS 服务器通过读取 PEM 格式的密钥和证书文件来建立安全连接。
|
||
|
|
|
||
|
|
#### HTTPS 服务器启动流程
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
flowchart TD
|
||
|
|
Start([检查HTTPS配置]) --> SecureEnabled{"secure参数启用?"}
|
||
|
|
SecureEnabled --> |是| LoadCert["读取SSL证书文件"]
|
||
|
|
SecureEnabled --> |否| StartHTTP["启动HTTP服务器"]
|
||
|
|
LoadCert --> CertLoaded{"证书文件存在?"}
|
||
|
|
CertLoaded --> |是| CreateHTTPS["创建HTTPS服务器"]
|
||
|
|
CertLoaded --> |否| ErrorCert["证书文件不存在"]
|
||
|
|
CreateHTTPS --> ListenHTTPS["监听HTTPS端口"]
|
||
|
|
StartHTTP --> ListenHTTP["监听HTTP端口"]
|
||
|
|
ListenHTTPS --> LogHTTPS["记录HTTPS地址"]
|
||
|
|
ListenHTTP --> LogHTTP["记录HTTP地址"]
|
||
|
|
LogHTTPS --> Ready([服务器就绪])
|
||
|
|
LogHTTP --> Ready
|
||
|
|
ErrorCert --> Error([启动失败])
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/index.ts:55-74](file://src/index.ts#L55-L74)
|
||
|
|
|
||
|
|
### 证书文件处理
|
||
|
|
|
||
|
|
系统支持自定义证书文件路径配置,默认使用 `server.key` 和 `server.cert` 文件。
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/index.ts:55-74](file://src/index.ts#L55-L74)
|
||
|
|
- [package.json:9](file://package.json#L9)
|
||
|
|
|
||
|
|
## CORS 配置
|
||
|
|
|
||
|
|
### 跨域资源共享设置
|
||
|
|
|
||
|
|
系统默认启用了 CORS 中间件,允许来自任何来源的跨域请求。
|
||
|
|
|
||
|
|
#### CORS 配置分析
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TD
|
||
|
|
A[CORS中间件] --> B[Origin: *]
|
||
|
|
A --> C[方法: GET, POST, PUT, DELETE]
|
||
|
|
A --> D[头部: 自动处理]
|
||
|
|
A --> E[凭证: 允许]
|
||
|
|
B --> F[允许所有来源]
|
||
|
|
C --> G[支持RESTful操作]
|
||
|
|
D --> H[自动预检请求]
|
||
|
|
E --> I[支持认证请求]
|
||
|
|
F --> J[简化客户端集成]
|
||
|
|
G --> K[完整的API访问]
|
||
|
|
H --> L[减少开发复杂度]
|
||
|
|
I --> M[增强安全性]
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/server.ts:22](file://src/server.ts#L22)
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/server.ts:22](file://src/server.ts#L22)
|
||
|
|
|
||
|
|
## 日志记录中间件
|
||
|
|
|
||
|
|
### Morgan 日志系统
|
||
|
|
|
||
|
|
系统使用 Morgan 中间件提供详细的 HTTP 请求日志记录。
|
||
|
|
|
||
|
|
#### 日志级别配置
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
flowchart TD
|
||
|
|
A[日志配置] --> B[none - 禁用日志]
|
||
|
|
A --> C[combined - 详细日志]
|
||
|
|
A --> D[dev - 开发友好]
|
||
|
|
A --> E[short - 简洁日志]
|
||
|
|
A --> F[tiny - 最简日志]
|
||
|
|
B --> G[生产环境推荐]
|
||
|
|
C --> H[完整请求详情]
|
||
|
|
D --> I[开发调试]
|
||
|
|
E --> J[基本请求信息]
|
||
|
|
F --> K[最小化开销]
|
||
|
|
H --> L[适合生产监控]
|
||
|
|
I --> M[适合开发调试]
|
||
|
|
J --> N[适合快速部署]
|
||
|
|
K --> O[适合性能敏感场景]
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/index.ts:28](file://src/index.ts#L28)
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/index.ts:18-20](file://src/index.ts#L18-L20)
|
||
|
|
- [src/log.ts:15-24](file://src/log.ts#L15-L24)
|
||
|
|
|
||
|
|
## 错误处理机制
|
||
|
|
|
||
|
|
### 统一日志系统
|
||
|
|
|
||
|
|
系统实现了统一的日志记录机制,支持多种日志级别和格式化输出。
|
||
|
|
|
||
|
|
#### 错误处理流程
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
flowchart TD
|
||
|
|
A[请求到达] --> B[中间件处理]
|
||
|
|
B --> C{处理成功?}
|
||
|
|
C --> |是| D[正常响应]
|
||
|
|
C --> |否| E[捕获错误]
|
||
|
|
E --> F[记录错误日志]
|
||
|
|
F --> G[返回错误响应]
|
||
|
|
G --> H[客户端处理]
|
||
|
|
D --> I[记录成功日志]
|
||
|
|
I --> H
|
||
|
|
```
|
||
|
|
|
||
|
|
**图表来源**
|
||
|
|
- [src/log.ts:30-50](file://src/log.ts#L30-L50)
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/log.ts:1-51](file://src/log.ts#L1-L51)
|
||
|
|
|
||
|
|
## 性能优化建议
|
||
|
|
|
||
|
|
### 服务器性能调优
|
||
|
|
|
||
|
|
基于现有代码结构,以下是针对该 HTTP 服务器的性能优化建议:
|
||
|
|
|
||
|
|
#### 内存管理优化
|
||
|
|
- 实现会话超时清理机制,避免内存泄漏
|
||
|
|
- 使用连接池管理数据库连接
|
||
|
|
- 实施缓存策略减少重复计算
|
||
|
|
|
||
|
|
#### 网络性能优化
|
||
|
|
- 启用 HTTP/2 支持提升传输效率
|
||
|
|
- 实现 gzip 压缩减少带宽占用
|
||
|
|
- 配置适当的缓存头提高静态资源加载速度
|
||
|
|
|
||
|
|
#### 并发处理优化
|
||
|
|
- 使用集群模式支持多核 CPU
|
||
|
|
- 实现请求队列管理防止过载
|
||
|
|
- 优化中间件执行顺序减少不必要的处理
|
||
|
|
|
||
|
|
## 安全配置最佳实践
|
||
|
|
|
||
|
|
### HTTPS 安全配置
|
||
|
|
|
||
|
|
#### 证书管理
|
||
|
|
- 使用受信任的 CA 机构签发的证书
|
||
|
|
- 定期更新证书并配置自动续期
|
||
|
|
- 实施证书透明度日志监控
|
||
|
|
|
||
|
|
#### 加密协议配置
|
||
|
|
- 启用 TLS 1.2+ 版本
|
||
|
|
- 配置强加密套件
|
||
|
|
- 禁用不安全的加密算法
|
||
|
|
|
||
|
|
#### 安全中间件
|
||
|
|
- 实施内容安全策略 (CSP)
|
||
|
|
- 启用 HTTP 严格传输安全 (HSTS)
|
||
|
|
- 配置跨站请求伪造 (CSRF) 保护
|
||
|
|
|
||
|
|
## 配置示例
|
||
|
|
|
||
|
|
### 基础配置示例
|
||
|
|
|
||
|
|
以下是一些常见的服务器配置示例:
|
||
|
|
|
||
|
|
#### 开发环境配置
|
||
|
|
```bash
|
||
|
|
# 启动开发服务器
|
||
|
|
npm run dev
|
||
|
|
|
||
|
|
# 或使用命令行参数
|
||
|
|
node ./build/index.js -s=false -p 8080 -m public -l dev
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 生产环境配置
|
||
|
|
```bash
|
||
|
|
# 构建生产版本
|
||
|
|
npm run build
|
||
|
|
|
||
|
|
# 启动生产服务器
|
||
|
|
npm run start
|
||
|
|
|
||
|
|
# 或使用自定义参数
|
||
|
|
node ./build/index.js -s=true -p 443 -m private -k ./server.key -c ./server.cert -l combined
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 批处理脚本配置
|
||
|
|
```batch
|
||
|
|
@echo off
|
||
|
|
pushd %~dp0
|
||
|
|
call npm run build
|
||
|
|
call npm run start
|
||
|
|
popd
|
||
|
|
pause
|
||
|
|
|
||
|
|
# 自定义运行参数
|
||
|
|
node ./build/index.js -s -p 8080 -m private -k ./server.key -c ./server.cert -l dev
|
||
|
|
```
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [package.json:9-12](file://package.json#L9-L12)
|
||
|
|
- [run.bat:8](file://run.bat#L8)
|
||
|
|
|
||
|
|
## 故障排除指南
|
||
|
|
|
||
|
|
### 常见问题诊断
|
||
|
|
|
||
|
|
#### HTTPS 证书问题
|
||
|
|
- **问题**: 证书文件不存在或权限不足
|
||
|
|
- **解决方案**: 确保证书文件路径正确,检查文件权限,验证证书格式
|
||
|
|
|
||
|
|
#### 端口占用问题
|
||
|
|
- **问题**: 端口被其他进程占用
|
||
|
|
- **解决方案**: 更换端口号,使用 `netstat` 检查端口占用情况
|
||
|
|
|
||
|
|
#### CORS 阻挡问题
|
||
|
|
- **问题**: 跨域请求被浏览器阻止
|
||
|
|
- **解决方案**: 检查 CORS 配置,确保 Origin 设置正确
|
||
|
|
|
||
|
|
#### 日志级别问题
|
||
|
|
- **问题**: 日志输出过多或过少
|
||
|
|
- **解决方案**: 调整日志级别配置,根据环境选择合适的日志格式
|
||
|
|
|
||
|
|
### 调试技巧
|
||
|
|
|
||
|
|
#### 启用详细日志
|
||
|
|
```javascript
|
||
|
|
// 在开发环境中使用详细日志
|
||
|
|
node ./build/index.js -l dev
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 检查服务器状态
|
||
|
|
```javascript
|
||
|
|
// 查看服务器配置
|
||
|
|
curl http://localhost:8080/config
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 测试 API 接口
|
||
|
|
```javascript
|
||
|
|
// 测试信令接口
|
||
|
|
curl -X GET http://localhost:8080/signaling
|
||
|
|
```
|
||
|
|
|
||
|
|
**章节来源**
|
||
|
|
- [src/index.ts:28](file://src/index.ts#L28)
|
||
|
|
- [src/server.ts:25](file://src/server.ts#L25)
|
||
|
|
|
||
|
|
## 结论
|
||
|
|
|
||
|
|
本 HTTP 服务器配置模块提供了完整的 WebRTC 信令服务器解决方案,具有以下特点:
|
||
|
|
|
||
|
|
### 核心优势
|
||
|
|
- **模块化设计**: 清晰的组件分离便于维护和扩展
|
||
|
|
- **灵活配置**: 支持多种运行模式和配置选项
|
||
|
|
- **完整功能**: 集成 HTTP、HTTPS、WebSocket、文件上传等多种功能
|
||
|
|
- **易于部署**: 提供构建脚本和批处理文件简化部署流程
|
||
|
|
|
||
|
|
### 技术特色
|
||
|
|
- **双协议支持**: 同时支持 HTTP Polling 和 WebSocket 两种信令方式
|
||
|
|
- **会话管理**: 完善的会话生命周期管理和超时处理机制
|
||
|
|
- **安全考虑**: HTTPS 加密传输和 CORS 跨域配置
|
||
|
|
- **可观测性**: 详细的日志记录和 Swagger API 文档
|
||
|
|
|
||
|
|
### 适用场景
|
||
|
|
该服务器适用于视频会议、在线教育、远程协作等需要实时音视频通信的应用场景。通过合理的配置和优化,可以满足不同规模和性能要求的部署需求。
|