跳转到内容

配置参考 (Configuration Reference)


后端配置

命令行参数

参数默认值说明
--port8080(或 $PORT 环境变量)HTTP 监听端口
--allowed-origins*(允许所有来源)WebSocket CORS 白名单,多个用逗号分隔
--version打印版本号并退出

配置优先级:--port flag > PORT 环境变量 > 默认值 8080

环境变量

变量名默认值说明
PORT8080HTTP/WebSocket 服务器监听端口
ALLOWED_ORIGINS空(允许所有来源)WebSocket CORS 白名单,多个用逗号分隔。设置后仅允许指定 Origin 的连接

内置常量

以下参数在代码中定义,修改需重新编译:

参数        值    文件            说明         
MaxMembers    50    internal/room/room.go   单房间最大成员数   
writeWait    10s    internal/network/client.goWebSocket 写超时   
pongWait     40s    internal/network/client.go读超时(心跳 1.5 倍)
sendBufferSize  256    internal/network/client.go发送缓冲区大小    
maxMessageSize  102400 bytesinternal/network/client.go单条消息最大字节数(含文件分片)
rateLimitWindow 10s    internal/network/client.go频率限制滑动窗口   
rateLimitMaxCount10    internal/network/client.go窗口内最大消息数   
Ping 间隔     25s    internal/network/client.go心跳发送间隔     
NanoID 长度    21 chars internal/network/hub.go  房间 ID 长度     

前端配置

环境变量

变量名    默认值         文件       说明        
VITE_WS_URLws://localhost:8080/ws.env.developmentWebSocket 服务器地址

环境文件

  • .env.development — 开发环境配置
  • .env.production — 生产环境配置(需创建)

生产环境示例 .env.production

VITE_WS_URL=wss://your-backend-domain.com/ws

内置常量

参数         值  文件             说明        
MAX_MESSAGES    200 stores/chatStore.ts    消息列表最大保留条数
RATE_LIMIT_WINDOW_MS10000stores/chatStore.ts    客户端频率限制窗口 
RATE_LIMIT_MAX   10  stores/chatStore.ts    窗口内最大发送数  
TYPING_TIMEOUT_MS  2000 stores/chatStore.ts    输入状态自动取消时间
MAX_LENGTH     500 components/MessageInput.tsx单条消息最大字符数 
SHOW_COUNT_THRESHOLD400 components/MessageInput.tsx显示字数统计的阈值 
BACKOFF_INITIAL_MS 1000 network/websocket.ts    重连初始退避时间  
BACKOFF_MAX_MS   30000network/websocket.ts    重连最大退避时间  

Vite 配置

文件:arthas-client/vite.config.ts

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
})

CLI 客户端配置

命令行参数

参数默认值说明
--serverwss://arthas-chat.onrender.com/wsWebSocket 服务器 URL
--name交互式提示显示昵称(1-20 字符)
--version显示版本号并退出
--help显示帮助信息并退出

环境变量

变量名默认值说明
ARTHAS_SERVERWebSocket 服务器 URL(优先级低于 --server flag)

内置常量

参数文件说明
joinTimeout30sinternal/chat/session.go等待服务器响应的超时
writeWait10sinternal/network/websocket.goWebSocket 写超时
pongWait40sinternal/network/websocket.go读超时(心跳 1.6 倍)
maxMessageSize102400internal/network/websocket.go单条消息最大字节数
sendChCapacity16internal/network/websocket.go发送队列容量
昵称长度限制20 runesinternal/ui/input.go显示名称最大长度
消息长度限制500 runesinternal/ui/input.go单条消息最大长度

配置优先级

--server flag > ARTHAS_SERVER 环境变量 > 默认值 (wss://arthas-chat.onrender.com/ws)
--name flag > 交互式提示输入

Tailwind 配置

文件:arthas-client/tailwind.config.js

默认使用暗色主题,扫描 src/ 下所有 TSX/TS 文件。


Docker 配置

项目包含两个 Dockerfile,服务不同的部署场景:

deploy/Dockerfile(自托管部署,推荐)

三阶段构建:前端构建 → Go 编译(嵌入前端)→ 最小化运行环境。

参数说明
前端构建镜像node:20-alpine构建 React 前端
Go 构建镜像golang:1.23-alpine编译后端 + 嵌入前端
运行镜像alpine:3.23最小化运行环境
暴露端口8080自托管默认端口
PORT 环境变量8080服务器监听端口
ALLOWED_ORIGINS空(允许所有)WebSocket CORS 白名单
VERSION build-arglatest编译时注入版本号
TARGETARCH build-arg自动检测目标 CPU 架构(amd64/arm64)

构建命令(从项目根目录执行):

Terminal window
# 构建完整镜像(前端 + 后端)
docker build -f deploy/Dockerfile -t arthas-server .
# 指定版本号
docker build -f deploy/Dockerfile --build-arg VERSION=v1.2.3 -t arthas-server:v1.2.3 .
# 运行
docker run -d -p 8080:8080 arthas-server
# 自定义端口和 CORS
docker run -d -p 3000:3000 -e PORT=3000 -e ALLOWED_ORIGINS=https://example.com arthas-server

访问方式:

路径功能
http://localhost:8080/前端 SPA 页面
http://localhost:8080/assets/*前端静态资源(JS/CSS,带内容哈希缓存)
ws://localhost:8080/wsWebSocket 连接端点
http://localhost:8080/ping健康检查(返回 pong

arthas-server/Dockerfile(HF Spaces 部署)

仅编译后端,不包含前端。用于 Hugging Face Spaces 等纯后端中继场景。

参数说明
构建镜像golang:1.23-alpine编译后端
运行镜像alpine:3.23最小化运行环境
暴露端口7860HF Spaces 默认端口
PORT 环境变量7860服务器监听端口
VERSION build-arg1.0.0编译时注入版本号

构建命令(从 arthas-server 目录执行):

Terminal window
cd arthas-server
docker build -t arthas-server .

注意: 此镜像不包含前端页面,访问根路径只会返回 placeholder HTML。前端需单独部署到 Vercel 等平台。


加密参数

参数说明
算法AES-256-GCMAEAD 认证加密
密钥长度256 bits (32 bytes)AES-256
IV 长度96 bits (12 bytes)GCM 推荐长度
roomId 长度21 charsNanoID 默认长度
分享码格式{roomId}:{base64url(key)}总长 65 字符
分享码长度65 chars21 + 1 + 43

错误码

Code名称触发条件客户端提示
E001ROOM_NOT_FOUNDJoinRoom 时 roomId 不存在”房间不存在或已关闭”
E002ROOM_FULLJoinRoom 时房间已满 50 人”房间已满,无法加入”
E003NOT_IN_ROOMSendMessage/Typing 时未加入房间”请先加入房间”
E004RATE_LIMITED消息频率超过 10条/10秒”发送过快,请稍后再试”
E005INVALID_MESSAGE消息格式错误(空/超长)“消息格式无效”

下一步