日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
HTML5WebSockets應(yīng)用初探

HTML 5之中一個很酷的新特性就是Web Sockets,在本文之前在《HTML 5 Web Socket:下一次Web通信革命揭幕》一文中已經(jīng)詳細(xì)的為大家介紹過HTML 5 Web Sockets為Web通信帶來的改變,而本文將介紹通過PHP環(huán)境的服務(wù)器端運行Web Socket,創(chuàng)建客戶端并通過Web Sockets協(xié)議發(fā)送和接收服務(wù)器端信息。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、古浪網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為古浪等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

什么是Web Sockets?

Web Sockets是在一個(TCP)接口進(jìn)行雙向通信的技術(shù),PUSH技術(shù)類型。同時Web Sockets仍將基于W3C標(biāo)準(zhǔn),目前為止,Chrome和Safari的***版本瀏覽器已經(jīng)支持Web Sockets了。

Web Sockets將會替代什么?  

Web Sockets可以替代Long Polling(PHP服務(wù)端推送技術(shù)),這是一個有趣的概念。客戶端發(fā)送一個請求到服務(wù)器,現(xiàn)在,服務(wù)器端并不會響應(yīng)還沒準(zhǔn)備好的數(shù)據(jù),它會保持連接的打開狀態(tài)直到***的數(shù)據(jù)準(zhǔn)備就緒發(fā)送,之后客戶端收到數(shù)據(jù),然后發(fā)送另一個請求。

這有它的好處:減少任一連接的延遲,當(dāng)一個連接已經(jīng)打開時就不需要創(chuàng)建另一個新的連接。但是Long-Polling并不是什么花俏技術(shù),他仍有可能發(fā)生請求暫停,因此會需要建立新的連接。

一些Ajax應(yīng)用使用上述技術(shù)-這經(jīng)常是歸因于低資源利用。試想一下,如果服務(wù)器在早晨會自啟動并發(fā)送數(shù)據(jù)到那些希望接收而不用提前建立一些連接端口的客戶端,這是一件多棒的事情啊!歡迎來到PUSH技術(shù)的世界!

***步:搞定Web Socket服務(wù)器  

文章會把更多的精力放在客戶端的創(chuàng)建而不是服務(wù)器端的執(zhí)行等操作。作者使用的是基于Windows 7的XAMPP來實現(xiàn)本地運行PHP。

啟動Apache服務(wù)器

第二步:修改URLs和端口  

根據(jù)你之前的安裝修改服務(wù)器,下面是setup.class.php中的例子:

 
 
 
 
  1. public function __construct($host='localhost',$port=8000,$max=100)  
  2.   
  3.    $this->createSocket($host,$port);  
  4.  

瀏覽文件并在適當(dāng)情況下進(jìn)行更改。

第三步:開始創(chuàng)建客戶端  

下面來創(chuàng)建基本模板,這是我的client.php文件:

 
 
 
 
  1.    
  2.   
  3.   
  4.   
  5.   
  6. Web Sockets Client  
  7.   
  8.   
  9.   
  10.   
  11.   
  12.       
  13.   
  14.         

    Web Sockets Client

      
  15.   
  16.           
  17.   
  18.         
  
  •         e.g. try 'hi', 'name', 'age', 'today'

      
  •   
  •           
  •         Disconnect  
  •   
  •     
  •   
  •   
  •   
  •   
  • 我們已經(jīng)創(chuàng)建里基本模板:一個chat log容器,一個input輸入框和一個斷開連接的按鈕。

    #p#

    第四步:添加一些CSS  

    沒什么花俏代碼,只是處理一下標(biāo)簽的樣式。

     
     
     
     
    1.  body {  
    2.     font-family:Arial, Helvetica, sans-serif;  
    3. }  
    4. #container{  
    5.     border:5px solid grey;  
    6.     width:800px;  
    7.     margin:0 auto;  
    8.     padding:10px;  
    9. }  
    10. #chatLog{  
    11.     padding:5px;  
    12.     border:1px solid black;  
    13. }  
    14. #chatLog p {  
    15.     margin:0;  
    16. }  
    17. .event {  
    18.     color:#999;  
    19. }  
    20. .warning{  
    21.     font-weight:bold;  
    22.     color:#CCC;  

    第五步:Web Socket事件

    首先讓我們嘗試并理解Web Socket事件的概念:

    ◆onopen: 當(dāng)接口打開時

    ◆onmessage: 當(dāng)收到信息時

    ◆onclose: 當(dāng)接口關(guān)閉時

    我們?nèi)绾蝸韺崿F(xiàn)呢?首先創(chuàng)建Web Socket對象。

     
     
     
     
    1. var socket = new Web Socket("ws://localhost:8000/socket/server/startDaemon.php");

    然后向下面這樣檢測事件:

     
     
     
     
    1.  socket.onopen = function(){  
    2.     alert("Socket has been opened!");  

    當(dāng)我們收到信息時這樣做:

     
     
     
     
    1.  socket.onmessage = function(msg){  
    2.     alert(msg); //Awesome!  

    但我們還是盡量避免使用alert,現(xiàn)在我們可以把我們學(xué)的東西整合到客戶端頁面中了。

    #p#

    第六步:JavaScript  

    首先我們將代碼放到j(luò)Query 的 document.ready函數(shù)中,然后我們還要檢查用戶的瀏覽器是否支持Web Socket。如果不支持,我們就添加一個鏈向Chrome瀏覽器頁面的鏈接。

     
     
     
     
    1.  $(document).ready(function() {  
    2.     if(!("Web Socket" in window)){  
    3.         $('#chatLog, input, button, #examples').fadeOut("fast");  
    4.         $('

      Oh no, you need a browser that supports Web Sockets. How about 

    5.     }else{  
    6.   
    7.     //The user has Web Sockets  
    8.   
    9.     connect();  
    10.   
    11.     function connect(){  
    12.         //the connect function code is below  
    13.   
    14.     }  
    15. }); 

    如你所見,如果用戶瀏覽器支持Web Socket,我們將執(zhí)行connect()函數(shù)。這里是核心功能,我們將開始創(chuàng)建open、close和receive事件。我們將在我們的服務(wù)器定義URL。

     
     
     
     
    1. var socket;  
    2. var host = "ws://localhost:8000/socket/server/startDaemon.php"; 

    你可能會發(fā)現(xiàn)URL中怎么沒有http?恩,是的,這是一個Web Socket URL,使用了不同的協(xié)議。下面是URL分解圖示:

    下面讓我們繼續(xù)完成connect()函數(shù),我們將代碼放入try/catch塊,這樣如果代碼出現(xiàn)問題,我們能讓用戶知道。我們創(chuàng)建Web Socket,并將信息傳遞到message()函數(shù),之后會做講解。我們創(chuàng)建我們的onopen、onmessage和onclose函數(shù). 需要注意的是我們?yōu)橛脩籼峁┝硕丝跔顟B(tài),這并不是必需的,但我們把它放進(jìn)來主要是為了方便調(diào)試。

     
     
     
     
    1. CONNECTING = 0
    2. OPEN = 1
    3. CLOSED = 2
    4.  function connect(){  
    5.     try{  
    6.   
    7.     var socket;  
    8.     var host = "ws://localhost:8000/socket/server/startDaemon.php";  
    9.     var socket = new Web Socket(host);  
    10.   
    11.         message('Socket Status: '+socket.readyState);  
    12.   
    13.         socket.onopen = function(){  
    14.              message('Socket Status: '+socket.readyState+' (open)');  
    15.         }  
    16.   
    17.         socket.onmessage = function(msg){  
    18.              message('Received: '+msg.data);  
    19.         }  
    20.   
    21.         socket.onclose = function(){  
    22.              message('Socket Status: '+socket.readyState+' (Closed)');  
    23.         }             
    24.   
    25.     } catch(exception){  
    26.          message('

      Error'+exception);  

    27.     }  

    message()函數(shù)很簡單, 它將我們想展現(xiàn)給用戶的文本填入chat log容器內(nèi)。 我們在socket事件函數(shù)中為段落(

    )標(biāo)簽創(chuàng)建適當(dāng)?shù)腸lass,我們在message函數(shù)中只有一個段落結(jié)束標(biāo)簽。

     
     
     
     
    1.  function message(msg){  
    2.     $('#chatLog').append(msg+'

      ');  

    目前的成果
      
    如果你已按上面教程按部就班的做的話,很好,我們已經(jīng)創(chuàng)建了HTML/CSS模板、創(chuàng)建并建立Web Socket連接、通過創(chuàng)建連接保持用戶的進(jìn)展更新。

    第七步:發(fā)送數(shù)據(jù)
      
    現(xiàn)在我們已經(jīng)有了提交按鈕,但我們還需要監(jiān)聽用戶按下鍵盤的事件,并運行send函數(shù),下面的’13′便是回車鍵對應(yīng)的ASCII碼。

     
     
     
     
    1.  $('#text').keypress(function(event) {  
    2.     if (event.keyCode == '13') {  
    3.         send();  
    4.     }  
    5. }); 

    下面是send()函數(shù):

     
     
     
     
    1. function send(){  
    2.  
    3.    var text = $('#text').val();  
    4.    if(text==""){  
    5.        message('Please enter a message');  
    6.        return ;  
    7.    }  
    8.    try{  
    9.        socket.send(text);  
    10.        message('Sent: '+text)  
    11.    } catch(exception){  
    12.    message(' Error:' + exception);  
    13.    }  
    14.  
    15.    $('#text').val("");  
    16.  
    17.  

    下面我們需要:

     
     
     
     
    1. socket.send();
    2.  

    那些額外的代碼做了以下工作:檢測用戶是否什么都沒輸入?yún)s仍點擊返回、清空input輸入框、執(zhí)行message()函數(shù)。

    #p#

    第八步:關(guān)閉Socket
      
    關(guān)閉Socket操作相當(dāng)簡單,添加對斷開連接按鈕的click事件監(jiān)聽就可以。

     
     
     
     
    1.  $('#disconnect').click(function(){  
    2.     socket.close();  
    3. }); 

    完整JavaScript代碼

     
     
     
     
    1.  $(document).ready(function() {  
    2.   
    3.   if(!("Web Socket" in window)){  
    4.   $('#chatLog, input, button, #examples').fadeOut("fast");  
    5.   $('

      Oh no, you need a browser that supports Web Sockets. How about 

    6.   }else{  
    7.       //The user has Web Sockets  
    8.   
    9.       connect();  
    10.   
    11.       function connect(){  
    12.           var socket;  
    13.           var host = "ws://localhost:8000/socket/server/startDaemon.php";  
    14.   
    15.           try{  
    16.               var socket = new Web Socket(host);  
    17.   
    18.               message('Socket Status: '+socket.readyState);  
    19.   
    20.               socket.onopen = function(){  
    21.                  message('Socket Status: '+socket.readyState+' (open)');  
    22.               }  
    23.   
    24.               socket.onmessage = function(msg){  
    25.                  message('Received: '+msg.data);  
    26.               }  
    27.   
    28.               socket.onclose = function(){  
    29.                 message('Socket Status: '+socket.readyState+' (Closed)');  
    30.               }           
    31.   
    32.           } catch(exception){  
    33.              message('

      Error'+exception);  

    34.           }  
    35.   
    36.           function send(){  
    37.               var text = $('#text').val();  
    38.   
    39.               if(text==""){  
    40.                   message('Please enter a message');  
    41.                   return ;  
    42.               }  
    43.               try{  
    44.                   socket.send(text);  
    45.                   message('Sent: '+text)  
    46.   
    47.               } catch(exception){  
    48.                  message('');  
    49.               }  
    50.               $('#text').val("");  
    51.           }  
    52.   
    53.           function message(msg){  
    54.             $('#chatLog').append(msg+'

      ');  
    55.           }  
    56.   
    57.           $('#text').keypress(function(event) {  
    58.               if (event.keyCode == '13') {  
    59.                 send();  
    60.               }  
    61.           });     
    62.   
    63.           $('#disconnect').click(function(){  
    64.              socket.close();  
    65.           });  
    66.   
    67.       }//End connect  
    68.   
    69.   }//End else  
    70.   
    71. }); 

    第九步:運行Web Socket服務(wù)器

    我們要輸入一些命令行,XAMPP提供了比較方便的shell選項。點擊XAMPP控制面板的’shell’按鈕并輸入:

     
     
     
     
    1. php -q path\to\server.php

    現(xiàn)在你已經(jīng)運行了Web Socket服務(wù)器!

    大功告成!

    當(dāng)頁面讀取后,將嘗試創(chuàng)建一個Web Socket連接,然后用戶可以輸入信息并從服務(wù)器接收信息。大家可以通過The Web Socket API了解HTML 5 Web Socket的***動態(tài)。

    原文標(biāo)題:HTML 5 Web Sockets 基礎(chǔ)使用教程

    原文地址:http://blog.bingo929.com/html5-Web Sockets.html


    名稱欄目:HTML5WebSockets應(yīng)用初探
    當(dāng)前網(wǎng)址:http://m.5511xx.com/article/djjpose.html