> For the complete documentation index, see [llms.txt](https://terryhuanghd.gitbook.io/build-game-services/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://terryhuanghd.gitbook.io/build-game-services/infrastructure/realtime-fu-wu.md).

# Realtime 服務

> 即時服務在有些遊戲中，扮演了非常關鍵的角色，比如：即時賽局的匹配、即時對弈...等等；對於一般遊戲也能增加互動性：比如：即時互動、聊天...等等

在 Parse 服務平台中，Realtime 服務需透過 Live Query 來達成，支援 Android 與 iOS 雙平台，可針對 Query 進行監聽。在 Firebase 平台中，Realtime Database 以及 Cloud Firestore 都原生提供了 Realtime 服務，廣泛地支援了多個平台和語言，除了都可針對特定資料進行監聽服務之外，Firestore 也支援了 Query 監聽

## 目錄

* [Parse Live Query 介紹](/build-game-services/infrastructure/realtime-fu-wu.md#parse-live-query)
* [Firebase Realtime Database 介紹](/build-game-services/infrastructure/realtime-fu-wu.md#firebase-realtime)
* [監聽 Firebase Cloud Firestore](/build-game-services/infrastructure/realtime-fu-wu.md#firebase-firestore)
* [主題：Parse Live Query 設定](/build-game-services/infrastructure/realtime-fu-wu/parse-live-query-she-ding.md)

## Parse Live Query 介紹 <a href="#parse-live-query" id="parse-live-query"></a>

Parse Query 是 Parse 的關鍵功能之一。它允許使用者指定某些條件來取得想要的資料。但是，Parse Query 僅支持 Pull Mode，不適用於需要 realtime 服務的程式。因此 Parse 推出了 Parse LiveQuery，能夠讓您直接訂閱原本的 Parse Query，一旦訂閱之後，當 Parse Query 的匹配成果出現變動，服務器就會主通通知客戶端

* Parse LiveQuery 支援 Parse Query 針對以下事件的監聽

| 事件     | 說明                                                      |
| ------ | ------------------------------------------------------- |
| create | 新增了一個的 Parse Object 符合 Parse Query 條件                   |
| enter  | 原本存在的 Parse Object 經過更新之後 符合 Parse Query 條件             |
| update | 原本符合 Parse Query 條件的 Parse Object 更新後也符合 Parse Query 條件 |
| leave  | 原本符合 Parse Query 條件的 Parse Object 更新後不符合 Parse Query 條件 |
| delete | 刪除了原本符合 Parse Query 條件的 Parse Object                    |

* Parse LiveQuery 使用者端支援語言平台
  * iOS
  * Android
  * JavaScript

## Firebase Realtime Database 介紹 <a href="#firebase-realtime" id="firebase-realtime"></a>

Firebase Realtime Database 是雲端 NoSQL 資料庫，資料以 JSON 格式存儲並，即時同步到每個連接的使用者端

* Firebase Realtime Database 可針對任意特定的 JSON 結點進行監聽。支援以下事件的監聽

| 事件       | 說明                                |
| -------- | --------------------------------- |
| onCreate | 當節點資料新增                           |
| onUpdate | 當節點資料以及其子結點資料更新                   |
| onDelete | 當節點資料刪除                           |
| onWrite  | 當節點資料 onCreate, onUpdate, onWrite |

* Firebase Realtime Database 使用者端支援語言平台
  * iOS
  * Android
  * Web(JavaScript)
  * C++
  * Unity

## 監聽 Firebase Cloud Firestore <a href="#firebase-firestore" id="firebase-firestore"></a>

Cloud Firestore 是一款有彈性與可擴展性的資料庫，支援多種平台。跟 Firebase Realtime Database 一樣，支援即時的監聽資料。與 Realtime 不同的是 Cloud Firestore 將資料放於文件（Document）中，並將文件組織成一個個集合（Collection），文件還可以包含多樣的子結構與子集合

> Firebase Cloud Firestore 目前（2018 Mar）依然是 beta 服務

* Firebase Cloud Firestore 可針對任意特定的文件進行監聽，每當文件變更時，便會取得 snapshot。除此之外也可針對 Query 進行多文件監聽，支援以下事件的監聽

| 事件       | 說明       |
| -------- | -------- |
| added    | 當監聽文件新增時 |
| modified | 當監聽文件變更時 |
| removed  | 當監聽文件移除時 |

Firebase Realtime Database 使用者端支援語言平台

* iOS
* Android
* Web(JavaScript)
* Node.js
* Java
* Python
* Go
