簡單的 Http
Websocket
Bot
介紹
- HTTP is hypertext transfer protocol
- HTTP is an application protocol
- HTTP is the foundation of data communication for the World Wide Web.
HTTP 是一個無狀態(Stateless)的協議,對於事務處理沒有記憶能力,伺服器不知道客戶端是什麼狀態。發送 HTTP 請求之後,伺服器根據請求,會給我們發送數據過來,但是,發送完,不會記錄任何訊息。
- Http 1.0
- HTTP 的生命週期透過 Request 來界定,也就是一個Request 一個Response,那麼在HTTP1.0中,這次HTTP請求就結束了
- Http 1.1
- 多出一個keep-alive,在一個HTTP連接中,可以發送多個Request,接收多個Response。
- 但是 Request = Response , 在HTTP中永遠是這樣,也就是說一個request只能有一個response。而且這個response也是被動的,不能主動發起。
傳統即時性網頁技術
- Polling 輪詢
- 瀏覽器每隔一段時間就自動送出一個 HTTP 請求給 server ,獲取最新的網頁資料
- 在 server 沒有新資料時,瀏覽器也是會自動送出請求,造成網路資源浪費
- Long-Polling 長時間輪詢
- server 在接收到瀏覽器所送出的 HTTP 請求後, server 會等待一段時間,若在這段時間裡 server 有新的資料,它就會把最新的資料傳回給瀏覽器
- 如果等待的時間到了之後也沒有新資料的話,就會送一個回應給瀏覽器,告知瀏覽器資料沒有更新
- 如果在資料更新很頻繁的狀況下,長時間輪詢並不會比傳統的輪詢有效率,而且有時候資料量很大時,會造成連續的 polls 不斷產生,反而會更糟糕。
- Streaming
- 讓 server 在接收到瀏覽器所送出 HTTP 請求後,立即產生一個回應瀏覽器的連線,並且讓這個連線持續一段時間不要中斷,而 server 在這段時間內如果有新的資料,就可以透過這個連線將資料馬上傳送給瀏覽器。
- 由於是建立在 HTTP 協定上的一種傳輸機制,所以有可能會因為代理 server(proxy)或防火牆(firewall)將其中的資料存放在緩衝區中,造成資料回應上的延遲,因此許多使用串流的 Comet 實作會在偵測到有代理 server 的狀況時,改用 Long-Polling 的方式處理。
WebSocket
WebSocket protocol 定義在 HTML5 標準中的一個新的網頁傳輸協議。
- 是一種建立在單一 TCP 連線上的全雙工(full-duplex)通訊管道,可以讓網頁應用程式與伺服器之間做即時性、雙向的資料傳遞。
- 瀏覽器與伺服器之間若要建立一條 WebSocket 連線,在一開始的交握(handshake)階段中,要先從 HTTP 協定升級為 WebSocket 協定
EventMachine
EventMachine 是一套事件驅動(event-driven IO) 的框架,基於Reactor Pattern 達到輕量化的併發處理
- Reactor模式
- 一個處理服務請求的並發程式設計模型。多個服務請求同時發往一個服務句柄(Service Handler)。服務句柄(Service Handler)多路分用到來的請求並把它們同步轉發給相關的請求處理器。
Github:
官網:
參考文件:
- WebSocket 介紹
- learn-eventmachine
- Building a Slackbot with Ruby and Sinatra
- EventMachine: scalable non-blocking i/o in ruby
- EventMachine簡介
- rails + websocket
- Using WebSockets on Heroku with Ruby
- Getting Started with Ruby and WebSockets
- Ruby SSE Server 動手做
- websocket序列文章目錄
- EventMachine和多執行序模型
- socket.io搭建多聊天室
- Using WebSockets on Heroku with Ruby
- BUILDING A SLACK SLASH COMMAND WITH SINATRA, FINCH AND HEROKU
- 實現一個 Slack Slash Command
- Serverless! 使用 AWS 開發 Slack Slash Commands
Video
- Your First Slack Bot Service (Ruby)
- Eventmachine Websocket 實戰 (Video)
- Say Hello To Your First Slackbot (Js)
Hubot
- Hubot Scripts
- hubot-scripts
- [心得] Hubot, 一套 bot framework
- 製作一個 Hubot 的噗浪 Adapter
- 在 slack 建立 hubot
- 如何製作 Hubot Script 推上 npm
- Hubot 聊天機器人簡單架設教學
- 使用Hubot建立屬於自己的機器人 (Build Your Own Robot With Hubot)
- 基於Hubot打造自己的聊天機器人服務
other
deploy
- heroku
- uptimerobot 一直戳 heroku 防止 server 進入休眠
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|