iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
0
自我挑戰組

Ruby on Rails 新手的30個問題!系列 第 25

Day_25 action cable? (2) Web Socket ?

嗨!各位朋友大家好,中秋節快樂,烤肉記得吃飽飽,我是阿圓,一樣有請今天的one piece:


(海軍將懸賞單廣播出去!就像 Pub/Sub 模式!)

昨天講到了早期的推播技術,而隨著這樣的需求越來越大,不同於 HTTP 協定的 Web Socket 便出現了!

Websocket ?

先來了解一下甚麼是Websocket ,我們請wiki大大出來說幾句話:

Websocket是一種與HTTP不同的協定。兩者都位於OSI模型的應用層,並且都依賴於傳輸層的TCP協定,雖然它們不同,但Websocket通過HTTP埠80和443進行工作,並支援HTTP代理和中介

(有點像是升級版的HTTP,因為他們還是用同一個 port 工作。)

一言以蔽之,Websocket 是一種讓瀏覽器和伺服器,進行持續性的雙向連線溝通,允許 server 隨時的、主動的向 client 端發送 response 的一種通訊協定

(Websocket 是通過 HTTP/1.1 協定的101狀態碼進行交握(Handshaking),上圖其實就是告訴 server ,我們要走 Websocket 協定,有關更多 Websocket 的詳細介紹,請參考wiki)

利用 Websocket 來通訊的方式有很多種,而 action cable 是採用Pub/Sub的方式。

Pub/Sub ?

一般而言,發送訊息的方式以兩種,而Pub/Sub模式,並不是單純的直接將 publisher 發送出去的訊息丟給 subscriber ,而是透過代理層(message broker)的方式將訊息廣播給subscriber。

換句話來說, publisher 跟 subscriber 之間根本不需要知道彼此是誰, 一切都交由中間層的 message broker 來處理。

(相較於 Pub/Sub 另一種模式稱為 observer pattern,有興趣請參考 wiki)

感謝各位看到這邊,明天我們就來實際的看看 Rails 的 action cable 是如何運作的吧!若有任何建議,請各位不吝指教!我們明天見!


參考文章

官方文件
Difference Between Pub-Sub Pattern and Observable Pattern
Ruby on Rails 實戰聖經


上一篇
Day_24 action cable(1) 早期推播技術 ?
下一篇
Day_26 action cable ?(3)
系列文
Ruby on Rails 新手的30個問題!30

尚未有邦友留言

立即登入留言