Moralis 高級實時查詢

2022-05-11 14:25 更新

高級連接

我們在適合大多數(shù)情況的標準連接中為您管理全局 WebSocket 連接。 但是,在某些情況下,您有多個 LiveQuery 服務器并希望連接到所有服務器,一個 WebSocket 連接是不夠的。 我們已經(jīng)針對此類場景公開了 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 協(xié)議以獲取更多詳細信息。

打開

client.open();

在您調用它之后,LiveQueryClient 將嘗試向 LiveQuery 服務器發(fā)送連接請求。

訂閱

let query = new Moralis.Query('Game');
let subscription = client.subscribe(query, sessionToken);
  • ?query?(必需):這是您要訂閱的 MoralisQuery。
  • ?sessionToken?:如果您提供 sessionToken,LiveQuery 服務器只會向 sessionToken 適合 MoralisObjects ACL 的客戶端發(fā)送更新。 您可以在此處查看 LiveQuery 協(xié)議以獲取更多詳細信息。

退訂

client.unsubscribe(subscription);

  • ?subscription?(必需):這是您要取消訂閱的訂閱。調用此方法后,您將不會從訂閱對象中獲得任何事件。

關閉

client.close();

此函數(shù)將關閉與此 LiveQueryClient 的 WebSocket 連接,取消自動重新連接,并取消訂閱所有基于它的訂閱。

事件處理

我們公開了三個事件來幫助您監(jiān)控 LiveQueryClient 的狀態(tài)。

打開事件

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');
});

當發(fā)生網(wǎng)絡錯誤或 LiveQuery 服務器錯誤時,您將收到此事件。

重新連接

由于整個 LiveQuery 功能依賴于與 LiveQuery 服務器的 WebSocket 連接,因此我們總是嘗試保持打開的 WebSocket 連接。

因此,當與 LiveQuery 服務器的連接丟失時,我們會嘗試自動重新連接。 我們在引擎蓋下做指數(shù)回退。

但是,如果 WebSocket 連接由于 ?Moralis.LiveQuery.close()? 或 ?client.close()? 而關閉,我們將取消自動重新連接。

SessionToken

當您訂閱 MoralisQuery 時,我們會將 sessionToken 發(fā)送到 LiveQuery 服務器。 對于標準 API,我們默認使用當前用戶的 sessionToken。 對于高級 API,您可以在訂閱 MoralisQuery 時使用任何 sessionToken。 需要注意的重要一點是,當您注銷或您使用的 sessionToken 無效時,您應該取消訂閱并重新訂閱 MoralisQuery。 否則,您可能會遇到安全問題,因為您會收到不應該發(fā)送給您的事件。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號