改进对 WebSocket 客户端断开连接的处理,以防止日志中出现大量错误。 主要变更: - 将关闭 channel 导致的发送失败日志级别从 error 降为 debug,因为客户端断开是正常操作。 - 在尝试发送消息(包括实时事件和历史事件)之前,主动检查客户端 channel 是否已关闭。 - 当检测到 channel 关闭时,及时终止发送任务,以确保资源被迅速清理并防止任务卡死。
About
This is a nostr relay running on rust and tokio. A Rust learning project with poor code quality.
Usage
Running Locally
Run cargo run with environment variable DB_PATH set to the path of the database file.
RUST_LOG=info BIND_ADDR="0.0.0.0:8080" DB_PATH=./nostr.db AUTH_REQUIRED=True cargo run
Docker
Run with a persistent database volume
docker run -p 8080:8080 -v /path/to/your/db:/usr/local/bin/nostr.db laoxong/nostr_demo:master
docker run -p 8080:8080 -e AUTH_REQUIRED=true laoxong/nostr_demo:master
Docker Compose
nostr-relay:
image: laoxong/nostr_demo:master
container_name: nostr-relay
volumes:
- ./nostr-relay/:/etc/nostr
environment:
- DB_PATH=/etc/nostr/nostr.db
- AUTH_REQUIRED=False
Env
-
DB_PATH: Path to the SQLite database file. Defaults to
nostr.db. -
BIND_ADDR: The address and port to bind the server to. Defaults to
0.0.0.0:8080. -
RUST_LOG: Log level. Defaults to
warn -
AUTH_REQUIRED: Set to
trueto enable authentication for publishing events (NIP-42). Defaults tofalse. If enabled, only authenticated clients whose pubkey is in the relay's trust list can publish events.
Features
- NIP-1
- NIP-2
- NIP-5
- NIP-9
- NIP-12
- NIP-42
- NIP-65