Parse Live Query 設定

伺服器端設定變更

{
  "appId": 'my_app_id',
  "masterKey": 'my_master_key',
  // ...
  "liveQuery": {
    "classNames": ['Test', 'TestAgain']  // Live Query 要支援的 Class
  }
}
  • 除此之外,還需要把掛載 Parse 的 http(s)Server 拿來創建一個 Live Query Server

// 原本 Express
let httpServer = require('http').createServer(app);
httpServer.listen(port);

// 新增 Live Query Server
var parseLiveQueryServer = ParseServer.createLiveQueryServer(httpServer);

LiveQuery 服務器的 ws protocol 會沿用 http(s)Server 監聽的主機名和端口。例如,如果 http(s)Sever 正在偵聽 localhost:8080,則 LiveQuery 服務器的 ws protocol 為 ws://localhost:8080/

Android Client 設定

  • 在 gradle 設定檔案中新增 dependency

dependencies {
  compile 'com.parse:parse-livequery-android:1.0.4'
}
  • 針對特定的 Query 進行 Subscribe

ParseQuery<Message> parseQuery = ParseQuery.getQuery(Message.class);

ParseLiveQueryClient parseLiveQueryClient = ParseLiveQueryClient.Factory.getClient();
SubscriptionHandling<ParseObject> subscriptionHandling = parseLiveQueryClient.subscribe(parseQuery);
  • 監聽所有事件

subscriptionHandling.handleEvents(new SubscriptionHandling.HandleEventsCallback<ParseObject>() {
    @Override
    public void onEvents(ParseQuery<ParseObject> query, SubscriptionHandling.Event event, ParseObject object) {
        // HANDLING all events
    }
})
  • 監聽特定事件

subscriptionHandling.handleEvent(SubscriptionHandling.Event.CREATE, new SubscriptionHandling.HandleEventCallback<ParseObject>() {
    @Override
    public void onEvent(ParseQuery<ParseObject> query, ParseObject object) {
        // HANDLING create events
    }
})

iOS Client 設定

  • 在 pod 設定檔案中新增 dependency

pod 'ParseLiveQuery'
  • 針對特定的 Query 進行 Subscribe

let myQuery = Message.query()!.where(....)
let subscription: Subscription<Message> = Client.shared.subscribe(myQuery)
  • 監聽所有事件

subscription.handleEvent { query, event in
    // HANDLING all events
}
  • 監聽特定事件

subscription.handle(Event.created) { query, object in
    // HANDLING create events
}

Last updated