原文 http://www.oseye.net/user/kevin/blog/79
關於WebSocket我打算分如下幾篇博文來探探路:
- WebSocket簡單使用(一) - 概念
- WebSocket簡單使用(二) - 用戶端
- WebSocket簡單使用(三) - 伺服器端
- WebSocket簡單使用(四) - 完整執行個體
- WebSocket簡單使用(五) - 類比 串連鍵盤 功能
背景:
前幾天老大突然發現有個連結鍵盤的功能,我仔細想了下或許是使用WebSocket來實現的,又加上最近HTML5的呼聲愈來愈高,覺得有必要研究下HTML5了。
如概念篇中介紹的握手協議,用戶端是由瀏覽器提供了API,所以只要使用JavaScript來簡單調用即可,而伺服器端是要自己實現的,伺服器端將在下個博文來講。
WebSocket JavaScript 介面定義:
- [Constructor(inDOMString url, optional inDOMString protocol)]
- interfaceWebSocket{
- readonly attribute DOMString URL;
- // ready state
- constunsignedshort CONNECTING =0;
- constunsignedshort OPEN =1;
- constunsignedshort CLOSED =2;
- readonly attribute unsignedshort readyState;
- readonly attribute unsignedlong bufferedAmount;
-
- // networking
- attribute Function onopen;
- attribute Function onmessage;
- attribute Function onclose;
- boolean send(inDOMString data);
- void close();
- };
- WebSocketimplementsEventTarget;
簡單瞭解下介面方法和屬性:
- readyState表示串連有四種狀態:
CONNECTING (0):表示還沒建立串連;
OPEN (1): 已經建立串連,可以進行通訊;
CLOSING (2):通過關閉握手,正在關閉串連;
CLOSED (3):串連已經關閉或無法開啟;
- url是代表 WebSocket 伺服器的網路地址,協議通常是”ws”或“wss(加密通訊)”,send 方法就是發送資料到伺服器端;
- close 方法就是關閉串連;
- onopen串連建立,即握手成功觸發的事件;
- onmessage收到伺服器訊息時觸發的事件;
- onerror異常觸發的事件;
- onclose關閉串連觸發的事件;
JavaScript呼叫瀏覽器介面執行個體如下:
- var wsServer ='ws://localhost:8888/Demo';//伺服器位址
- var websocket =newWebSocket(wsServer);//建立WebSocket對象
- websocket.send("hello");//向伺服器發送訊息
- alert(websocket.readyState);//查看websocket目前狀態
- websocket.onopen =function(evt){
- //已經建立串連
- };
- websocket.onclose =function(evt){
- //已經關閉串連
- };
- websocket.onmessage =function(evt){
- //收到伺服器訊息,使用evt.data提取
- };
- websocket.onerror =function(evt){
- //產生異常
- };