【Html5 WebSocket】WebSocket事件,html5websocket事件

來源:互聯網
上載者:User

【Html5 WebSocket】WebSocket事件,html5websocket事件

《HTML5 WebSocket權威指南》學習筆記&2

上一篇:【Html5 WebSocket】WebSocket建構函式

WebSocket事件

WebSocket編程遵循非同步編程模式,只要WebSocket的串連已開啟,應用程式就開始監聽事件。用戶端不需要主動輪詢伺服器擷取更多資訊。下面是WebSocket對象的四個不同的監聽器:

  • open
  • message
  • error
  • close

上述四個事件同所有的Web API一樣,可以通過on<事件名稱>處理對象屬性監聽這些事件,也可以使用addEventListener()方法。

open訊息

Open事件的觸發在用戶端與服務端之間的握手成功之後調用,可以在此事件裡調用用戶端發送資料給服務端等業務處理。下面是樣本:

var ws = new WebSocket("ws://echo.websocket.org/echo",[]);/*open事件觸發表明協議握手成功,WebSocket以及準備好接收和發送資料*/ws.onopen = function(e){    console.log("start..");    ws.send("Message send");//給服務端發送一條簡訊}

上述頁面載入後
開發人員工具控制台會輸出 start..

message訊息

message訊息在用戶端接收到訊息時觸發,應用程式會給監聽器傳入訊息內容以待處理。因為是在用戶端API學習階段,我們是使用echo.websocket.org作為服務端,所以這裡要觸發message訊息,我們就需要先給服務端發送一條訊息,服務端會把這條訊息原樣返回來,下面是樣本:

var ws = new WebSocket("ws://echo.websocket.org/echo",[]);/*open事件觸發表明協議握手成功,WebSocket以及準備好接收和發送資料*/ws.onopen = function(e){    console.log("start..");    ws.send("Message send");}/*message訊息在用戶端接收到訊息時觸發*/ws.onmessage = function(e){    console.log("message..");    if(typeof e.data == "string"){        console.log("String message recevied",e,e.data);    }else{        console.log("Other message recevied",e,e.data);    }    ws.close();}

在控制台可以看輸出結果

error訊息

error訊息在響應意外故障的時候觸發,並且在這個訊息觸發後,close訊息也隨即會被觸發,所以這個訊息裡最適用於串連重啟等操作。為了觸發這個訊息(只是為了學習看看效果),我們首先得出錯,出錯的方式就是給服務端發一個它看不懂的協議,example,這樣,串連就不會建立成功,error事件觸發,下面是樣本:

var ws = new WebSocket("ws://echo.websocket.org/echo",["example"]);/*close訊息在關閉串連時觸發*/ws.onclose = function(e){    console.log("close",e);}
close訊息

close訊息在關閉串連時觸發,這裡我們在串連建立好之後,就使用close方法關閉串連,從而可以觸發close事件

var ws = new WebSocket("ws://echo.websocket.org/echo",[]);/*open事件觸發表明協議握手成功,WebSocket以及準備好接收和發送資料*/ws.onopen = function(e){    console.log("start..");    ws.close();}/*close訊息在關閉串連時觸發*/ws.onclose = function(e){    console.log("close..");}

在控制台可以看到輸出
start..
close..

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.