Action Cable-Rails Guide導讀

「你可以教教我愛客繩纜線嗎?」

中場休息
Jan 3, 2021

以下我先用我自己對Rails Guide(v6.1.0)的翻譯,作為開頭介紹---

1. 什麼是Action Cable?

Action Cable將WebSocket技術與Rails本身的其他部分無縫地整合在一起。
它用Ruby編寫即時功能,並保持與Rails其他部分一樣的風格與形式,同時也有效能和可擴充性。
它對客戶端(網頁的瀏覽器)的JavaScript框架以及伺服器端的Ruby框架(就是Rails)提供全端的服務。
你可以對Active Record(或其他你運用的ORM)所編寫出來的領域模型進行存取。

2. 技術名詞

2.1 Connections (連接)

connection 是與客戶端形成關係的基礎。
一個Action Cable伺服器可以處理多個connection實體。
一個WebSocket connection對應一個的connection實體。
使用者可用多個瀏覽器分頁或不同裝置,在你的程式(或者說網站)開啟多個WebSocket服務。

2.2 Consumers (接收者)

WebSocket connection的客戶端就叫做consumer。
在Action Cable裡,consumer是客戶端的JavaScript框架所產生的。

2.3 Channels (頻道)

每個consumer可以反過來訂閱多個channel。
每個channel封裝一個邏輯工作單元,與MVC架構裡的Controller相似。
舉例,你可能有一個ChatChannel和一個AppearancesChannel,而且consumer可以訂閱這兩個頻道中的一個或兩個。
一個consumer至少會訂閱一個頻道。

2.4 Subscribers (訂閱者)

當consumer訂閱channel時,被該channel當作是subscriber。
subscriber和channel之間的連接,叫做subscription。
(編按:呼應第一句)一個consumer可以被它訂閱的channel多次地當作(意思就是,重複被當作新的)subscriber。(編按:這點一開始看不懂沒關係,如果實作了聊天室,就可以驗證重複訂閱這點,之後可能會要用 consumer.subscriptions.subscriptions[0] 之類的東西)
以2.3的舉例繼續說明,consumer可以同時訂閱多個chat room(同樣都在ChatChannel下)。
請記住,一個現實世界的使用者可用多個瀏覽器分頁或不同裝置,同時成為多個consumer。

2.5 Pub/Sub (推播/訂閱)

Pub/Sub,全名Publish-Subscribe,是指一種訊息佇列模式,據由該佇列,信息發送者(Publishers)將數據發送給抽象類別(abstract class)的接收者(Subscribers),而無需指定個別的接收者。
Action Cable使用此方法在伺服器端和多個客戶端之間進行通信。

2.6 Broadcastings (廣播,Broadcast的名詞)

Broadcasting是Pub/Sub的鏈接(意指使用broadcast 的動作),廣播者發送的任何內容都直接發送到指名的channel,該channel串流的subscribers(頻道訂閱者)接收。
每個頻道可以串流零個或多個Broadcastings。

References

Guides.rubyonrails.org — Action Cable Overview

--

--

中場休息

休息是為了走更長遠的路,把簡單的成長養成一種放鬆習慣,那豈不一舉兩得?