You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript钱包应用中WalletConnect v2 SignClient重连历史会话咨询

WalletConnect v2 SignClient 自动重连历史会话实现指南

以下是基于JavaScript实现自动重连历史会话的具体步骤和逻辑:

1. 初始化SignClient(与首次创建会话时保持一致)

必须用相同的projectId和钱包metadata初始化SignClient,否则重连会失败。示例代码:

import { SignClient } from "@walletconnect/sign-client";

const signClient = await SignClient.init({
  projectId: "你的ProjectID",
  metadata: {
    name: "你的钱包名称",
    description: "钱包描述",
    url: "钱包官网",
    icons: ["钱包图标URL"]
  }
});

2. 从持久化层加载存储的会话数据

确保你存储的是完整的Session对象(包含topic、peerMetadata、namespaces、expiry等核心字段)。假设你的持久化层读取方法是getStoredSessions(),代码示例:

// 从本地存储/数据库读取所有历史会话
const storedSessions = await getStoredSessions();

3. 逐个重连会话

遍历存储的会话,调用signClient.reconnect()发起重连,同时处理重连失败的情况(比如会话已过期或被DApp终止):

for (const session of storedSessions) {
  try {
    // 先检查会话是否已过期
    if (session.expiry * 1000 < Date.now()) {
      // 移除过期会话
      await removeStoredSession(session.topic);
      continue;
    }

    // 发起重连请求
    await signClient.reconnect({ topic: session.topic });
    console.log(`会话 ${session.topic} 重连成功`);
  } catch (error) {
    console.error(`会话 ${session.topic} 重连失败:`, error);
    // 重连失败时移除无效会话
    await removeStoredSession(session.topic);
  }
}

4. 监听重连后的关键事件

重连成功后,需要监听会话相关事件以维持正常交互:

// 监听DApp的ping请求,确认连接存活
signClient.on("session_ping", ({ params }) => {
  console.log(`收到来自 ${params.topic} 的ping请求`);
  // 可选:回复ping
  signClient.ping({ topic: params.topic });
});

// 监听DApp发起的会话事件(比如链上交易请求)
signClient.on("session_event", ({ params }) => {
  const { topic, event } = params;
  console.log(`会话 ${topic} 收到事件:`, event);
  // 这里处理DApp的请求,比如弹窗让用户确认交易
});

// 监听会话断开事件,及时清理存储
signClient.on("session_delete", ({ params }) => {
  await removeStoredSession(params.topic);
  console.log(`会话 ${params.topic} 已断开`);
});

关键注意事项

  • 会话完整性:必须存储完整的Session对象,不能只存topic,重连需要验证peerMetadata和namespaces等信息。
  • 参数一致性:初始化SignClient的projectId和metadata必须和首次创建会话时完全一致,否则会被DApp拒绝。
  • 错误处理:重连失败时要及时从持久化层删除无效会话,避免下次启动重复尝试。
  • 过期检查:每次重连前先检查会话过期时间,跳过已过期的会话。

内容的提问来源于stack exchange,提问作者Saman Salehi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:53:24