IM Core
IM Core 是一个支持 WebSocket 和 QUIC 协议的即时通讯核心库,提供客户端和服务端功能实现。
Features 配置
该库提供以下 feature flags:
client: 客户端功能,包含 WebSocket 和 QUIC 客户端实现server: 服务端功能,包含 WebSocket 和 QUIC 服务端实现full: 完整功能,包含客户端和服务端所有功能(等同于同时启用client和server)
默认启用客户端和服务端功能:default = ["client", "server"]
依赖关系
client
├── tokio-tungstenite (WebSocket 支持)
├── quinn (QUIC 支持)
├── rustls (TLS 支持)
└── rustls-pemfile (证书处理)
server
├── tokio-tungstenite (WebSocket 支持)
├── quinn (QUIC 支持)
├── rustls (TLS 支持)
└── rustls-pemfile (证书处理)
使用示例
1. 仅客户端场景
[]
= { = "0.1.0", = false, = ["client"] }
2. 仅服务端场景
[]
= { = "0.1.0", = false, = ["server"] }
3. 完整功能
[]
= { = "0.1.0" } # 使用默认 features
# 或者
= { = "0.1.0", = ["full"] }
代码示例
WebSocket 客户端
use WsClient;
async
QUIC 服务端
use QuicServer;
async
协议支持
-
WebSocket
- 基于
tokio-tungstenite实现 - 支持文本和二进制消息
- 支持心跳保活
- 支持断线重连
- 基于
-
QUIC
- 基于
quinn实现 - 支持多路复用
- 内置 TLS 1.3
- 支持 0-RTT 连接
- 支持连接迁移
- 基于
安全性考虑
-
TLS 配置
- 使用
rustls提供 TLS 支持 - 支持自定义证书配置
- 推荐使用 TLS 1.3
- 使用
-
认证机制
- 支持 token 认证
- 支持自定义认证插件
- 支持加密消息传输
性能考虑
-
WebSocket
- 适合需要实时性但网络条件较好的场景
- 支持大规模并发连接
- 资源占用相对较低
-
QUIC
- 适合移动场景和弱网环境
- 支持连接迁移,网络切换时保持会话
- 多路复用减少连接开销
- 0-RTT 重连提高性能
最佳实践
- 在弱网环境优先使用 QUIC 协议
- 需要广泛兼容性时使用 WebSocket
- 生产环境必须启用 TLS
- 根据实际需求选择合适的重连策略
- 合理配置心跳间隔,建议 30-60 秒
- 使用 tokio 运行时的多线程模式提高性能