野火IM支持TLS与KCP连接方式
野火IM在原有连接方案的基础上,新增了对 TLS 和 KCP 两种连接方式的支持,以满足不同客户在不同网络环境下的需求。
1. 原有方案回顾
在此之前,野火IM客户端使用的是 mars 连接库,该库能够同时支持 HTTP 和 TCP 连接,但无法支持 TLS 和 UDP。
2. 安全问题无需担心
虽然原有连接方式不支持 TLS,但野火IM在传输安全方面已经做了充分的保障。我们采用了安全的加密方案对数据进行保护,包括 AES 或 SM2 加密算法,确保通信内容的安全性。
3. 新增连接方式
3.1. TLS 连接
TLS 方式强制使用 HTTPS 和 TLS over TCP,在野火原有数据加密的基础之上,再叠加一层 TLS 加密。
适用场景:
- 对安全合规有强制要求,必须启用 TLS 的客户。
注意事项:
- TLS 与普通连接方式 不能同时共存,只能二选一。
- 普通客户建议使用原有的加密方案,不需要使用TLS方案。
3.2. KCP 连接
KCP 是一种基于 UDP 的可靠传输协议,能够在弱网环境下提供更好的连接表现。
适用场景:
- 网络环境较差、丢包率较高、需要更低延迟的场景。
- 普通客户不建议使用KCP,仅推荐网络差的客户。
特点:
- 可以与 TCP 共存,即部分客户端使用 TCP,部分客户端使用 KCP,灵活部署。
- 发送文件等操作仍需走 HTTP(S)。
- Web/小程序 客户端不支持。
3.3. 国密支持
国密算法(TCP over 国密)的支持目前正在推进中,但由于缺少足够的测试条件,尚未完成完整验证。欢迎有条件的客户与我们合作,共同推进国密方案的开发和测试工作。
4. 如何开启
4.1. 开启 TLS
- 在 IM 服务的配置文件中,添加 SSL 证书配置;
- 添加 ssl_port 配置项;
- 打开 https_port 配置;
- 客户端调用 SDK 的
useTls方法。
4.2. 开启 KCP
- 在服务端开启 KCP 的长连接端口和短连接端口;
- 注意在防火墙中放开对应的 UDP 端口;
- 客户端调用 SDK 的
setUseKcp方法。
5. 总结
| 连接方式 | 传输协议 | 适用场景 | 与原有方案共存 |
|---|---|---|---|
| 原有方案 | TCP + HTTP | 通用场景 | — |
| TLS | TCP over TLS + HTTPS | 强制 TLS 合规 | ❌ 二选一 |
| KCP | UDP | 弱网环境 | ✅ 可以共存 |
根据您的实际网络环境和安全合规要求,选择合适的连接方式即可。