WebSocket+CDN


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直接返回給瀏覽器,因此就可以提高訪問速度。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM