快速开始
DAO MESSAGE 提供 Web 和 Android 两个平台的官方 SDK。两端协议完全互通——Web 用户和 Android 用户能互发消息、互通通话。
后端不可替换。 所有客户端连接到
relay.daomessage.com,服务器仅转发密文,对消息内容、联系人和密钥完全零知识。你部署的是 UI 客户端,不是后端。
选择你的平台
🌐 Web SDK · TypeScript
@daomessage_sdk/sdk · 浏览器、PWA、Electron、React Native Web
- 安装:
npm install @daomessage_sdk/sdk - 框架无关:React / Vue / Svelte / 原生 JS 都可以
- 👇 本页下方继续
📱 Android SDK · Kotlin
space.securechat:sdk · Android 原生应用
- Jetpack Compose / 传统 View 都可以
- → 前往 Android SDK 接入指南(暂在 GitHub README,即将迁入本站)
Web SDK 5 分钟上手
构建一个端到端加密聊天应用——服务器永远看不到你的消息。
安装
bash
npm install @daomessage_sdk/sdk1. 创建客户端
typescript
import { SecureChatClient, newMnemonic } from '@daomessage_sdk/sdk';
// 无需参数 —— 中继服务器地址已内置于 SDK 中。
const client = new SecureChatClient();位于
relay.daomessage.com的中继服务器仅转发密文。它对消息内容、联系人或加密密钥完全零知识。
2. 注册账号
typescript
// 生成 12 个单词的 BIP-39 助记词(这是用户的主密钥)
const mnemonic = newMnemonic();
// 注册:派生 Ed25519 + X25519 密钥,执行 PoW,上传公钥
const { aliasId } = await client.auth.registerAccount(mnemonic, 'Alice');
console.log('注册成功:', aliasId); // 例如 "u12345678"重要:助记词是恢复账号的唯一方式。请妥善保管——服务器永远不会接触到它。
3. 通过 WebSocket 连接
typescript
client.connect();这会打开一个到中继服务器的持久 WebSocket 连接。SDK 自动处理:
- 指数退避自动重连
- 心跳保活(30 秒间隔)
- JWT Token 认证
4. 监听消息
typescript
client.on('message', (msg) => {
console.log(`[${msg.conversationId}] ${msg.isMe ? '我' : msg.fromAliasId}: ${msg.text}`);
});on() 方法返回一个取消订阅函数——非常适合 React:
typescript
useEffect(() => {
return client.on('message', handleMessage); // 自动清理
}, []);5. 发送消息
typescript
const messageId = await client.sendMessage(
conversationId, // 双方共享的会话 ID
toAliasId, // 接收方的 alias ID
'Hello, World!'
);消息自动经过以下处理:
- 使用会话密钥的 AES-256-GCM 加密
- 通过 WebSocket 发送
- 本地持久化到 IndexedDB
- 离线时自动排队重试
6. 添加联系人
typescript
// 通过 alias ID 查找用户
const user = await client.contacts.lookupUser('u87654321');
// 发送好友请求
await client.contacts.sendFriendRequest(user.alias_id);
// 接受好友请求
await client.contacts.acceptFriendRequest(friendshipId);
// 同步所有联系人(创建本地加密会话)
const friends = await client.contacts.syncFriends();完整示例
typescript
import { SecureChatClient, newMnemonic } from '@daomessage_sdk/sdk';
const client = new SecureChatClient();
// 注册
const mnemonic = newMnemonic();
const { aliasId } = await client.auth.registerAccount(mnemonic, 'Alice');
// 连接
client.connect();
// 监听
client.on('message', (msg) => {
console.log(`${msg.fromAliasId}: ${msg.text}`);
});
// 发送(添加联系人后)
await client.sendMessage('conv_abc', 'u87654321', 'Hello!');