2012年5月8日 星期二

[note] WebSocket API

很想來個Web Sockets淺談的標題,但是以目前對他的認知,連淺談都還稱不上,所以就簡單記錄一下

在web 2.0的時代, 我們使用了Ajax來進行非同步的資料處理,而ajax與server溝通的方式還是可以分為
1.一般的方式為client polling,資訊"即時"的情形取決於client的詢問,效率不彰也很耗損資源
2.Comet:Long lived connection,由server來主動push data給client
3.Long pooling:Comet演進而來,client發出request後,server沒有新資料可以回傳,會等待一段比較長的時間,直到server有新資料可以回傳,或timeout為止,維持一條long polling的查詢減少requet的建立與結束,目前如facebook採用此較有效率的動態更新方式
WebSockets的初衷就是提供socket給web server與client browser,讓client與server之間可以維持長時間的連線,並且可以進行Server Push此類比較有效率的溝通方式

但是因為安全因素考量,Firefox跟Opera曾經都disalbe對先前版本的websocket
-Firefox: 4與5的版本(話說天殺的firefox現在幾乎以光速更新版本中)中disable websocket =>(http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/), 現今版本支援追蹤(https://developer.mozilla.org/zh_tw/WebSockets)
-Opera:(Opera 11)

目前熱門的websocket實作技術為
socket IO(http://socket.io/) +NodeJS(http://nodejs.org/)
這兩個的新玩意也要等摸過了才能再繼續補充

而Java方面,apache tomcat 7.0.27也支援了websocket( http://www.tomcatexpert.com/blog/2012/05/01/how-apache-tomcat-implemented-websocket)

在實作上
1.extends WebSocketServlet class
2.implement message listener
3.writing data to client
4.close connection to client


To be continuted.....

沒有留言: