## **WebSocket 客戶端**
在客戶端,沒有必要為 WebSockets 使用 JavaScript 庫。實現 WebSockets 的 Web 瀏覽器將通過 WebSockets 對象公開所有必需的客戶端功能(主要指支持 Html5 的瀏覽器)。
## **客戶端 API**
以下 API 用于創建 WebSocket 對象。
var Socket = new WebSocket(url, [protocol] );
以上代碼中的第一個參數 url, 指定連接的 URL。第二個參數 protocol 是可選的,指定了可接受的子協議。
### **WebSocket 屬性**
以下是 WebSocket 對象的屬性。假定我們使用了以上代碼創建了 Socket 對象:
屬性|描述
:---:|:--:
Socket.readyState| 只讀屬性 readyState 表示連接狀態,可以是以下值:0 - 表示連接尚未建立。1 - 表示連接已建立,可以進行通信。2 - 表示連接正在進行關閉。3 - 表示連接已經關閉或者連接不能打開。
Socket.bufferedAmount| 只讀屬性 bufferedAmount 已被 send() 放入正在隊列中等待傳輸,但是還沒有發出的 UTF-8 文本字節數。
### **WebSocket 事件**
以下是 WebSocket 對象的相關事件。假定我們使用了以上代碼創建了 Socket 對象:
事件|事件處理程序|描述
:---:|:--:|:--:
open| Socket.onopen| 連接建立時觸發
message| Socket.onmessage| 客戶端接收服務端數據時觸發
error| Socket.onerror| 通信發生錯誤時觸發
close| Socket.onclose| 連接關閉時觸發
### **WebSocket 方法**
以下是 WebSocket 對象的相關方法。假定我們使用了以上代碼創建了 Socket 對象:
方法|描述
:--:|:--:
Socket.send()| 使用連接發送數據
Socket.close()| 關閉連接
示例
```
// 初始化一個 WebSocket 對象
var ws = new WebSocket("ws://localhost:9998/echo");
// 建立 web socket 連接成功觸發事件
ws.onopen = function () {
// 使用 send() 方法發送數據
ws.send("發送數據");
alert("數據發送中...");
};
// 接收服務端數據時觸發事件
ws.onmessage = function (evt) {
var received_msg = evt.data;
alert("數據已接收...");
};
// 斷開 web socket 連接成功觸發事件
ws.onclose = function () {
alert("連接已關閉...");
};
```