WebSocket是HTML5開始提供的一種在單個TCP連接上進行全雙工通訊的協議,本質上是一個TCP協議
已經有了HTTP協議,為什么還需要WebSocket?
因為HTTP的通信只能由客戶端發起,而無法做到服務器主動向客戶端推送信息。這種單向請求的特點,導致如果服務器有連續的狀態變化,客戶端就很難獲取,只能采用輪詢的方式,即每隔一段時間,就發送一個詢問,了解服務器有沒有新的信息,最典型的場景就是聊天室。但是輪詢的效率低,非常浪費資源,所以WebSocket出現了
WebSocket使得客戶端與服務器之間的數據交換變得簡單,允許服務端主動向客戶端推送數據,瀏覽器和服務器只需要完成一次握手,兩者之間就可以建立持久性的連接,並進行雙向數據傳輸

WebSocket特點:
1.建立在TCP協議之上,服務器端的實現比較容易
2.與HTTP協議有着良好的兼容性,默認端口也是80和443,並且握手階段采用HTTP協議,因此握手時不容易屏蔽,能通過各種HTTP代理服務器
3.數據格式比較輕量,性能開銷小,通信高效
4.可以發送文本,也可以發送二進制數據
5.沒有同源限制,客戶端可以與任意服務器通信
6.協議標識符是ws(如果加密,則為wss),服務器網址就是URL
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>菜鳥教程(runoob.com)</title> <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" in window) { alert("您的瀏覽器支持 WebSocket!"); // 打開一個 web socket var ws = new WebSocket("ws://localhost:9998/echo"); ws.onopen = function() { // Web Socket 已連接上,使用 send() 方法發送數據 ws.send("發送數據"); alert("數據發送中..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("數據已接收..."); }; ws.onclose = function() { // 關閉 websocket alert("連接已關閉..."); }; } else { // 瀏覽器不支持 WebSocket alert("您的瀏覽器不支持 WebSocket!"); } } </script> </head> <body> <div id="sse"> <a href="javascript:WebSocketTest()">運行 WebSocket</a> </div> </body> </html>
CDN:Content Delivery Network內容分發網絡,就是在用戶和服務器之間加一個緩存機制,根據地理位置讓用戶到最近的服務器訪問。
CDN是一組分布在多個不同的地理位置的WEB服務器,用於更加有效的向用戶發布內容,在優化性能時,會根據距離的遠近來選擇 。當CDN服務器中緩存有用戶請求的數據時,就可以從CDN直接返回給瀏覽器,因此就可以提高訪問速度。
