Nychta Server 是一个使用 ASP.NET Core 开发的第三方开源无名杀服务端。
本项目并非无名杀官方项目。
- 兼容无名杀原服务端的主要交互协议,可使用标准客户端连接,无需修改客户端或安装适配扩展
- 提供可配置的连接、房间、消息速率、消息大小和消息缓冲限制,降低恶意或异常客户端耗尽服务端资源的风险
- 提供结构化控制台日志和 HTTP 健康检查
选择以下任意一种运行方式:
项目通过 global.json 指定 .NET SDK 版本。若使用本地 SDK,请先运行 dotnet --version 确认环境可用。
dotnet run --project src/NychtaServer.Cli服务默认监听 http://0.0.0.0:8082:
- WebSocket 地址:
ws://localhost:8082/ - 健康检查地址:
http://localhost:8082/health
可通过以下命令检查服务是否正常运行:
curl http://localhost:8082/health正常情况下将返回:
{"status":"ok"}docker build -t nychta-server .
docker run --rm -p 8082:8082 nychta-server容器启动后同样通过 ws://localhost:8082/ 连接。
默认配置位于 src/NychtaServer.Cli/appsettings.json:
| 配置项 | 默认值 | 说明 |
|---|---|---|
Server:Url |
http://0.0.0.0:8082 |
服务监听地址 |
Server:KeyTimeoutMilliseconds |
2000 |
客户端提交身份密钥的超时时间(毫秒) |
Server:HeartbeatIntervalMilliseconds |
60000 |
WebSocket 心跳间隔(毫秒) |
Server:LobbyUpdateDebounceMilliseconds |
25 |
大厅信息更新的防抖时间(毫秒) |
Server:MaxConnections |
0 |
同时存在的 WebSocket 连接数上限;0 表示不限制 |
Server:MaxRoomMembers |
0 |
单个房间的连接数上限(包含房主);0 表示不限制 |
Server:MaxMessagesPerSecond |
0 |
单个 WebSocket 连接每秒处理的消息数;超限时会背压等待,0 表示不限制 |
Server:MaxMessageBytes |
0 |
单条 WebSocket 消息的 UTF-8 字节数上限;超限时关闭连接,0 表示不限制 |
Server:MaxBufferedMessageBytes |
67108864 |
所有连接正在组装或处理的消息缓冲总预算;0 表示不限制 |
可以修改配置文件,也可以使用 ASP.NET Core 的双下划线环境变量格式覆盖配置。例如,将监听端口改为 9000:
Server__Url=http://0.0.0.0:9000 dotnet run --project src/NychtaServer.Cli例如,将单连接的消息处理速率限制为每秒 100 条,并将单条消息限制为 1 MiB:
Server__MaxMessagesPerSecond=100 Server__MaxMessageBytes=1048576 dotnet run --project src/NychtaServer.Cli当前房间、客户端和联机活动状态均保存在内存中,服务重启后不会保留。
这五项限制共同约束服务端可消耗的连接、房间与消息处理资源:
MaxConnections:限制同时在线的 WebSocket 连接数。达到上限后,新的 WebSocket 请求会在升级前收到 HTTP503。MaxRoomMembers:限制每个房间的成员数(包含房主)。房间满员时,客户端会收到原有的enterroomfailed响应。MaxMessagesPerSecond:限制每个连接每秒处理的消息数。超出速率时服务端会施加背压等待,而不是继续无上限处理。MaxMessageBytes:限制单条消息的 UTF-8 字节数。消息过大时,服务端会关闭该连接。MaxBufferedMessageBytes:限制所有连接组装和处理入站消息时可占用的总缓冲区。预算耗尽时,服务端会关闭触发超限的连接,避免内存被持续占用。
除 MaxBufferedMessageBytes 默认值为 64 MiB 外,其余限制默认关闭,以保持原服务端兼容性。所有限制均可设为 0 关闭;负数配置会导致服务启动失败。
构建整个解决方案:
dotnet build运行测试:
dotnet test项目结构:
src/NychtaServer/ 服务端核心逻辑
src/NychtaServer.Cli/ 可执行服务与运行配置
tests/NychtaServer.Tests/ 单元测试和集成测试
本项目基于 Apache License 2.0 许可发布。