今日目標,介紹 WebSocket 技術、解釋之後如何使用 WebSocket 實作遊戲機制。
WebSocket 是一種基於 TCP 的全雙工網路傳輸協定。早期的推播技術、訊息即時更新技術,都是使用 輪詢(polling)[1] 的方式,但這種作法會需要大量的請求和回覆,造成同樣的標頭(header) 重複使用,而且用的是很肥的 HTTP 標頭,實際傳輸的內容大小可能比標頭還小,因此這種作法會佔據大量傳輸資源(尤其是需要短時間不斷更新的功能),於是 WebScocket 技術就誕生了。
在 WebSocket 技術中,Server 和 Client 之間會先透過 HTTP 協定 握手(handshake)[2] 建立一個 TCP 通道(類似從 server 拉水管到 client),之後傳輸訊息就可以直接透過通道,而不必再使用 HTTP 協定的標頭,而且他是全雙工,所以 Server 可以主動向 Client 傳輸資料。
WebSocket 使用的具體過程為,Client 先和 Server 發起連線,當成功連線後 Client 可以訂閱(subscribe) 代理(broker)[3],當 Server 發送訊息到代理時,有該代理會將訊息傳給有訂閱的 Client。在建立連線時,Client 會有特定的 Session 被 Server 儲存,所以 Server 能透過這些 Session 來確定各個連接的 Client 是誰,也就能做到指定對象的傳輸。
先列出功能需求:
功能需求的實現
今天先描述我們之後要開發的功能,並稍微解說之後如何實現這些功能,難免有點枯燥,但總要了解基礎嘛~