WebSockets是下一代web應用程式的雙向通信技術,它通過一個套接字操作,並通過符合HTML 5標準的瀏覽器中的JavaScript接口公開。
一旦獲得與Web伺服器的Web套接字連接,就可以通過調用asend()方法從瀏覽器向伺服器發送數據,並通過onmessage事件處理程序從伺服器向瀏覽器接收數據。
下面是創建新WebSocket對象的API。
var Socket = new WebSocket(url, [protocal] );
在這裡,第一個參數url指定要連接到的url。第二個屬性protocol是可選的,如果存在,則指定伺服器必須支持的子協議才能成功連接。
WebSocket Attributes
下面是WebSocket對象的屬性。假設我們創建了上面提到的Socket對象;
Sr.No. | Attribute & Description |
---|---|
1 | 套接字.readyState readonly屬性readyState表示連接的狀態。它可以有以下值&負;
|
2 | 緩衝底座插座 readonly屬性bufferedAmount表示使用send()方法排隊的UTF-8文本的字節數。 |
WebSocket Events
以下是與WebSocket對象關聯的事件。假設我們創建了上面提到的Socket對象;
Event | Event Handler | Description |
---|---|---|
open | Socket.onopen | This event occurs when socket connection is established. |
message | Socket.onmessage | This event occurs when client receives data from server. |
error | Socket.onerror | This event occurs when there is any error in communication. |
close | Socket.onclose | This event occurs when connection is closed. |
WebSocket Methods
以下是與WebSocket對象關聯的方法。假設我們創建了上面提到的Socket對象;
Sr.No. | Method & Description |
---|---|
1 | Socket.send() send(data)方法使用連接發送數據。 |
2 | 套接字。關閉() close()方法將用於終止任何現有連接。 |
WebSocket Example
WebSocket是客戶端和伺服器之間的標準雙向TCP套接字。套接字開始是一個HTTP連接,然後在HTTP握手之後「升級」到一個TCP套接字。握手之後,任何一方都可以發送數據。
Client Side HTML & JavaScript Code
在編寫本教程時,只有少數web瀏覽器支持WebSocket()接口。您可以使用最新版本的Chrome、Mozilla、Opera和Safari來嘗試下面的示例。
<!DOCTYPE HTML> <html> <head> <script type = "text/javascript"> function WebSocketTest() { if ("WebSocket" in window) { alert("WebSocket is supported by your Browser!"); // Let us open a web socket var ws = new WebSocket("ws://localhost:9998/echo"); ws.onopen = function() { // Web Socket is connected, send data using send() ws.send("Message to send"); alert("Message is sent..."); }; ws.onmessage = function (evt) { var received_msg = evt.data; alert("Message is received..."); }; ws.onclose = function() { // websocket is closed. alert("Connection is closed..."); }; } else { // The browser doesn't support WebSocket alert("WebSocket NOT supported by your Browser!"); } } </script> </head> <body> <div id = "sse"> <a href = "javascript:WebSocketTest()">Run WebSocket</a> </div> </body> </html>
Install pywebsocket
在測試上述客戶端程序之前,需要一個支持WebSocket的伺服器。從pywebsocket下載mod_pywebsocket-x.x.x.tar.gz,其目的是爲ApacheHTTP伺服器提供Web套接字擴展,並按照以下步驟安裝。
解壓並解壓下載的文件。
進入pywebsocket-x.x.x/src/目錄。
$python setup.py生成
$sudo python setup.py安裝
然後按−鍵閱讀文檔;
- $pydoc mod_pywebsocket
這將把它安裝到python環境中。
Start the Server
轉到pywebsocket-x.x.x/src/mod_pywebsocket文件夾並運行以下命令−
$sudo python standalone.py -p 9998 -w ../example/
這將在埠9998啓動伺服器監聽,並使用echo-wsh.py所在的-w選項指定的處理程序目錄。
現在使用Chrome瀏覽器打開您在開始時創建的html文件。如果您的瀏覽器支持WebSocket(),那麼您將收到警告,表明您的瀏覽器支持WebSocket,最後當您單擊「運行WebSocket」時,您將收到伺服器腳本發送的再見消息。