標籤:style http color java os io 資料 ar
官網英文參考: http://docs.oracle.com/javaee/7/tutorial/doc/websocket001.htm#BABDABHF
中文解析:
Websocket 應用,server作為一個Websocket 端點,client 通過server的URL地址串連到server.一旦server和client串連建立,那就是對稱串連。server和client在串連open的時候,可以再任何時候,相互發送資訊。一個client通常只串連一個server,server支援多個client串連。
Websocket協議分為兩個部分(握手和資料交換)。用戶端通過URL地址初始化握手請求,握手協議相容目前的HTTP協議。server收到請求,將其理解為一個HTTP串連升級請求。
用戶端發起的串連握手請求如:
GET /path/to/websocket/endpoint HTTP/1.1Host: localhostUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg==Origin: http://localhostSec-WebSocket-Version: 13
服務端的回複請求如:
HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: K7DJLdLooIwIG/MOpvWFB3y3FE8=
server通過一個方法,利用Sec-WebSocket-Key來產生Sec-WebSocket-Accept。用戶端通過同樣的方法,利用Sec-WebSocket-Key 產生Sec-WebSocket-Accept。如果接收的回複值和自己計算的值是一樣的,那麼就建立串連。握手成功之後,server和client就可以發送訊息。
Websocket支援文本格式和二進位格式,Websocket的方法有close,ping,pong.ping,pong 連個方法可以包含資料。
Websocket 端點通過URIS區分表示,具體有下面兩種方式:
ws://host:port/path?querywss://host:port/path?query
ws 表示非加密串連,wss 表示加密串連,連接埠是可以指定的。非加密通訊預設是80連接埠,加密串連預設是443連接埠,path 是server 端點的路徑,query是可選項。 主流瀏覽器都實現Websocket協議,而且提供javascript 介面(串連到server 端點,發送資訊,回調)