iT邦幫忙

DAY 13
1

練習如何去開發一個通訊軟體 Boo it!系列 第 13

Day13 – EM-websocket 電話總機,總是要有人當傳話筒麻!

前面我們已經提到,websocket 的好用之處。在運用它龐大且超強的溝通能力之前,我們必須去建立後端server,來負責處理通訊過程。

在傳統網站上,有Apache、IIS等網頁伺服器在處理HTTP 請求。那我們必須去客製化一個server來處理websocket通訊。在各式各樣的語言之中,都已經有實現websocket server的library出來。而且大部分都是openSource的,算是一大福音!

在JavaScript的領域裡面有Socket.IO ,在Python裡面有pywebsocket,在Ruby有EventMachine。

我們在這邊實作的是Ruby語言去開發出來的EM-websocket。當然! 實作websocket是沒有程式語言限制的,如果你比較習慣前端javaScript可以去用node.js,或者是Python開發出來的pywebsocket等,選擇你最習慣的語言去達到事半功倍的效果。

在前面章節之中,如果你已經安裝完成Ruby的語言以及gem套件管理系統。

就可以輸入以下指令來幫助我們安裝em-websocket

gem install em-websocket

安裝完成之後,就來體會它的魅力試看看吧!

在開發作者的example之中,可以看到語法其實跟HTML前端websocket語法相似,甚至一樣。這樣我們寫起來也相當容易許多,至於用法都以前章節介紹的一樣。

require 'em-websocket'

EM.run {

  EM::WebSocket.run(:host => "0.0.0.0", :port => 8080) do |ws|

    ws.onopen { |handshake|

      puts "WebSocket 開啟連接!"

      ws.send "已經建立連線"

    }

    ws.onclose { puts "連線關閉" }

    ws.onmessage { |message|

      puts "從client收到的訊息: #{message}"

      ws.send "回復client傳來訊息(echo) :#{msg}"

    } 

end

}

很簡單的用法,在EM::WebSocket 裡,0.0.0.0代表的是localhost端,至於port由8080進來。

如同前章節所介紹,在建立連線之後可以交換訊息。

上述範例為 回覆客戶端傳來的訊息。

當然,我們也可以加密連線wss:// 。

在Security的議題之中,百密總有一疏,因此要再額外自行去加強設計加密等才是比較安全的作法。

以下提供EM websocket的Github連結。

https://github.com/igrigorik/em-websocket

還有實現websocket前端以及後端echo範例的網站

http://www.websocket.org/echo.html


上一篇
Day12 – WebSocket 新的戰爭已經開始! 不再飛鴿傳書,改用電話!
下一篇
Day14 - JSON - 資料交換的秘密武器!
系列文
練習如何去開發一個通訊軟體 Boo it!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言