Web SOCKET 在網頁上的實作與應用
現今網路技術的發展一日千里,網站所能提供給使用者的服務也越來越豐富多元,如線上聊天,Facebook的動態消息,Twitter等都具備了動態更新頁面上資訊的功能。
要達成上述功能的實作有下列幾種方式:Polling、Comet、Long Polling、WebSocket等。
目前Long Polling是最常見的即時更新方式。
現階段的瀏覽器對於HTML5的支援度越來越高,若是使用WebSocket來建立SERVER跟CLIENT之間雙向的通道來溝通訊息,不失為一種更為方便的方式。
讓開發者在程式的撰寫上更為直覺,能專注在訊息傳遞的規則上。
以下介紹兩種方式來建置Socket Server:
NODE JS 的 Socket.IO
Socket.IO需要在NODE JS架設的SERVER上執行,對WebSocket的支援非常完整,幫你處理了WebSocket各種版本的握手協議,使用上非常方便。socket.io官網位置=> http://socket.io/
聊天廣播 - Socket.io
現有網路的架構,Server-Client 這樣的結合己經延用己久,目前HTTP 的協定是 stateless,一但 client 和 server 通訊完,server 就不知道 client 跑去那了?
如果 server 有更新想要 Push 給 client,就要反過來從 Client 定期的去向 server 要求。
今天要來使用 socket.io 這個 module 就是可以達到 server 和 client 的雙向溝通,只要一建立連線 server 可以一直傳訊息給 client,反過來也行,直接某一方斷線為止。
且不論 socket.io 底層是什麼,若用一個 socket.io來建立聊天廣播這樣的一個服務。client 端則可用 簡單的HTML 語法來實現。
PHP 的 Socket Functions
由於SOCKET SERVER的建置在網路上也不是什麼新鮮的東西,基本上已經有許多的說明以及文件可以參考;所以當初內部使用此一範例來做測試,並整理了一些問題及解決方式。
線上聊天室 - http://code.google.com/p/php-websocket-server/此一程式提供了scoket server的建置,以及HTML5基本的client端對socket的連接和溝通。
websocket 端,由於websocket的通訊協議到目前還未正式定案,所以在實作握手協議的時候會有不同版本的問題(連訊息的傳送方式也不同),目前範例為第七版草案(之後的版本大多屬於功能上的擴充),所以有些舊瀏覽器 (像是iPhone4上的safari ) 使用之前的版本將會無法建立通道及溝通。
留言
張貼留言