老的Websocket介紹
WebSocket通訊協議實現的是基於瀏覽器的原生socket,在客戶端用JS即可輕鬆完成。WebSocket的最大功效就是實時性,可以不用重新整理就可以接收資料,這點和Ajax很像,但是又不同於Ajax,Ajax需要傳送請求,而WebSocket不用發請求就可以接受伺服器端的資料。下面介紹一下WebSocket協議:
WebSocket的協議是很簡單的,這裡我把它分成客戶端和服務端來講。在客戶端,new WebSocket即可例項化一個新的WebSocket物件,但其引數略微有一點不一樣,引數格式是這樣的ws://yourdomain:port/path ,
eg:ws = new WebSocket( “ws://www.zendstudio.net:9108/chat” );)
WebSocket物件會自動解析這段字串,傳送到指定伺服器埠,首先執行的是雙方握手(handshake),客戶端傳送資料格式類似這樣:
GET /chat HTTP/1.1Upgrade: WebSocketConnection: Upgrade Host: www.zendstudio.net:9108Origin: http://www.zendstudio.net Cookie: somenterCookie這很是有些類似於http的頭資訊,同樣每行都是以”\r\n”結尾的,上面這段格式無需我們去構造,WebSocket物件會自動傳送,對客戶端這是透明的。此時服務端應該返回的資訊是:
HTTP/1.1 101 Web Socket Protocol HandshakeUpgrade: WebSocket Connection: UpgradeWebSocket-Origin: http://www.zendstudio.net WebSocket-Location: ws://www.zendstudio.net:9108/chat從這裡我們太容易看出來,WebSocket協議的握手部分根本就是個類http的協議,所不同的是http每次都會有這樣子的頭資訊互動,這在某些時候不得不顯得很糟糕。而WebSocket只會執行一次這個過程,之後的傳輸資訊就變得異常簡潔了。
客戶端在握手成功後,會觸發WebSocket物件的onopen事件,告訴客戶端連線已經成功建立了。客戶端的WebSocket物件一共繫結了四個事件:
1、onopen:連線建立時觸發;
2、onmessage:收到服務端訊息時觸發;
3、onerror:連線出錯時觸發;
4、onclose:連線關閉時觸發;
有了這4個事件,我們就可以很容易很輕鬆的駕馭WebSocket,並且需要說明的是WebSocket支援二進位制資料的傳輸,因此,它遠不止聊天室應用這麼簡單。
服務端呢?服務端也是非常簡單的,但是仍然需要注意的問題是,作為伺服器,安全和效能是不可忽略的,除此之外,只管往socket裡面寫資料就可以了,WebSocket的通訊資料全部是以”\x00″開頭以”\xFF”結尾的,無論是服務端發出的資料還是客戶端傳送的資料都遵從這個格式,唯一不同的是客戶端的WebSocket物件能夠自動將頭尾去除,獲得主體資料,這就省卻了我們在客戶端處理原始資料的必要,真是個體貼周到的物件啊!順便說一句,WebSocket通訊資料的編碼總是UTF-8格式的。好了,WebSocket協議就是這麼簡單。到這裡,寫一個服務端應該不是什麼困難的事情了吧?這僅僅需要一點點socket程式設計知識,任何語言都可以輕鬆實現。
相關文章
- gorilla websocket簡易介紹GoWeb
- WebSocket協議入門介紹Web協議
- js WebSocket用法簡單介紹JSWeb
- Spring Framework 參考文件(WebSocket介紹)SpringFrameworkWeb
- WebSocket簡介Web
- 【譯】WebSocket協議第一章——介紹(Introduction)Web協議
- 板橋老師,請介紹一些新技術
- Cloudera的介紹Cloud
- Redis的介紹Redis
- MySQLTuner的介紹MySql
- VQGAN的介紹
- WebSocket簡介與最佳實踐Web
- WebSocket原理及技術簡介Web
- 介紹
- Mongo的bulkWrite介紹Go
- DruidDataSource的介紹UI
- ThreadLocal的介紹thread
- hazelcast的基本介紹AST
- boost庫的介紹
- HashSet的特性介紹
- WebSocket 簡介及應用例項Web
- LAMP架構介紹、MYSQL介紹、安裝LAMP架構MySql
- JVM中堆的介紹JVM
- 伺服器的介紹伺服器
- ORACLE MTS的介紹(zt)Oracle
- Webpack 的簡單介紹Web
- orbeon form 的配置介紹ORBORM
- 代理ip的功能介紹
- 最通俗的機器學習介紹機器學習
- python類的介紹Python
- spring框架的介紹Spring框架
- ActiveMq的基礎介紹MQ
- HTML的介紹與seoHTML
- layui 的基本使用介紹UI
- JDBC的基礎介紹JDBC
- JQuery的介紹與使用jQuery
- Geth的命令列介紹命令列
- Promise的簡單介紹Promise