1. 程式人生 > >js-webSocket入門

js-webSocket入門

Websocket

1.websocket是什麼?

WebSocket是為解決客戶端與服務端實時通訊而產生的技術。其本質是先通過HTTP/HTTPS協議進行握手後建立一個用於交換資料的TCP連線,

此後服務端與客戶端通過此TCP連線進行實時通訊。

2.websocket的優點

以前我們實現推送技術,用的都是輪詢,在特點的時間間隔有瀏覽器自動發出請求,將伺服器的訊息主動的拉回來,在這種情況下,我們需要不斷的向伺服器 傳送請求,然而HTTP request 的header是非常長的,裡面包含的資料可能只是一個很小的值,這樣會佔用很多的頻寬和伺服器資源。會佔用大量的頻寬和伺服器資源。

WebSocket API最偉大之處在於伺服器和客戶端可以在給定的時間範圍內的任意時刻,相互推送資訊。在建立連線之後,伺服器可以主動傳送資料給客戶端。

此外,伺服器與客戶端之間交換的標頭資訊很小。

WebSocket並不限於以Ajax(或XHR)方式通訊,因為Ajax技術需要客戶端發起請求,而WebSocket伺服器和客戶端可以彼此相互推送資訊;

關於ajax,comet,websocket的詳細介紹,和websocket報文的介紹,大家可以參看http://www.shaoqun.com/a/54588.aspx  網頁設計]Ajax、Comet與Websocket,

我如果以後有時間,也會寫出來的

3.如何使用websocket

客戶端

在支援WebSocket的瀏覽器中,在建立socket之後。可以通過onopen,onmessage,onclose即onerror四個事件實現對socket進行響應

一個簡單是示例

var ws = new WebSocket(“ws://localhost:8080”);

ws.onopen = function()

{  console.log(“open”);

  ws.send(“hello”);

};

ws.onmessage = function(evt)

{

  console.log(evt.data)

};

ws.onclose = function(evt)

{

  console.log(“WebSocketClosed!”);

};

ws.onerror = function(evt)

{

  console.log(“WebSocketError!”);

};

1.var ws = new WebSocket(“ws://localhost:8080”);

申請一個WebSocket物件,引數是需要連線的伺服器端的地址,同http協議使用http://開頭一樣,WebSocket協議的URL使用ws://開頭,另外安全的WebSocket協議使用wss://開頭。

ws.send(“hello”);
用於叫訊息傳送到服務端
2.ws.onopen = function() { console.log(“open”)};

當websocket建立成功時,即會觸發onopen事件
3.ws.onmessage = function(evt) { console.log(evt.data) };
當客戶端收到服務端發來的訊息時,會觸發onmessage事件,引數evt.data中包含server傳輸過來的資料
4.ws.onclose = function(evt) { console.log(“WebSocketClosed!”); };

當客戶端收到服務端傳送的關閉連線的請求時,觸發onclose事件
5.ws.onerror = function(evt) { console.log(“WebSocketError!”); };
如果出現連線,處理,接收,傳送資料失敗的時候就會觸發onerror事件
我們可以看出所有的操作都是採用事件的方式觸發的,這樣就不會阻塞UI,使得UI有更快的響應時間,得到更好的使用者體驗。