阅读(3156) (0)

Moralis 高级实时查询

2022-05-11 09:23:26 更新

高级连接

我们在适合大多数情况的标准连接中为您管理全局 WebSocket 连接。 但是,在某些情况下,您有多个 LiveQuery 服务器并希望连接到所有服务器,一个 WebSocket 连接是不够的。 我们已经针对此类场景公开了 LiveQueryClient。

实时查询客户端

LiveQueryClient 是标准 WebSocket 客户端的包装器。 我们添加了几种有用的方法来帮助您连接/断开与 LiveQueryServer 的连接以及轻松订阅/取消订阅 MoralisQuery。

初始化

let Moralis = require('moralis');
let LiveQueryClient = Moralis.LiveQueryClient;
let client = new LiveQueryClient({
  applicationId: '',
  serverURL: '',
  javascriptKey: '',
  masterKey: ''
});
  • applicationId​(必填):它是您的 Moralis Dapp 的 applicationId。
  • serverURL​(必填):它是 LiveQuery 服务器的 URL。
  • javascriptKey
  • masterKey

javascriptKey ​和 ​masterKey ​用于在 LiveQueryClient 尝试连接到 LiveQuery 服务器时对其进行验证。 如果您设置它们,它们应该与您的 Moralis 应用程序相匹配。 您可以在此处查看 LiveQuery 协议以获取更多详细信息。

打开

client.open();

在您调用它之后,LiveQueryClient 将尝试向 LiveQuery 服务器发送连接请求。

订阅

let query = new Moralis.Query('Game');
let subscription = client.subscribe(query, sessionToken);
  • query​(必需):这是您要订阅的 MoralisQuery。
  • sessionToken​:如果您提供 sessionToken,LiveQuery 服务器只会向 sessionToken 适合 MoralisObjects ACL 的客户端发送更新。 您可以在此处查看 LiveQuery 协议以获取更多详细信息。

退订

client.unsubscribe(subscription);

  • subscription​(必需):这是您要取消订阅的订阅。调用此方法后,您将不会从订阅对象中获得任何事件。

关闭

client.close();

此函数将关闭与此 LiveQueryClient 的 WebSocket 连接,取消自动重新连接,并取消订阅所有基于它的订阅。

事件处理

我们公开了三个事件来帮助您监控 LiveQueryClient 的状态。

打开事件

client.on('open', () => {
  console.log('connection opened');
});

当我们与 LiveQuery 服务器建立 WebSocket 连接时,您将收到此事件。

关闭事件

client.on('close', () => {
  console.log('connection closed');
});

当我们失去与 LiveQuery 服务器的 WebSocket 连接时,您将收到此事件。

错误事件

client.on('error', (error) => {
  console.log('connection error');
});

当发生网络错误或 LiveQuery 服务器错误时,您将收到此事件。

重新连接

由于整个 LiveQuery 功能依赖于与 LiveQuery 服务器的 WebSocket 连接,因此我们总是尝试保持打开的 WebSocket 连接。

因此,当与 LiveQuery 服务器的连接丢失时,我们会尝试自动重新连接。 我们在引擎盖下做指数回退。

但是,如果 WebSocket 连接由于 ​Moralis.LiveQuery.close()​ 或 ​client.close()​ 而关闭,我们将取消自动重新连接。

SessionToken

当您订阅 MoralisQuery 时,我们会将 sessionToken 发送到 LiveQuery 服务器。 对于标准 API,我们默认使用当前用户的 sessionToken。 对于高级 API,您可以在订阅 MoralisQuery 时使用任何 sessionToken。 需要注意的重要一点是,当您注销或您使用的 sessionToken 无效时,您应该取消订阅并重新订阅 MoralisQuery。 否则,您可能会遇到安全问题,因为您会收到不应该发送给您的事件。