
- HTML 教程
- HTML - 首頁
- HTML - 路線圖
- HTML - 簡介
- HTML - 歷史與發展
- HTML - 編輯器
- HTML - 基本標籤
- HTML - 元素
- HTML - 屬性
- HTML - 標題
- HTML - 段落
- HTML - 字型
- HTML - 塊
- HTML - 樣式表
- HTML - 格式化
- HTML - 引用
- HTML - 註釋
- HTML - 顏色
- HTML - 圖片
- HTML - 圖片地圖
- HTML - Iframes
- HTML - 短語元素
- HTML - 元標籤
- HTML - 類
- HTML - ID
- HTML - 背景
- HTML 表格
- HTML - 表格
- HTML - 表頭與標題
- HTML - 表格樣式
- HTML - 表格 Colgroup
- HTML - 巢狀表格
- HTML 列表
- HTML - 列表
- HTML - 無序列表
- HTML - 有序列表
- HTML - 定義列表
- HTML 連結
- HTML - 文字連結
- HTML - 圖片連結
- HTML - 郵件連結
- HTML 顏色名稱與值
- HTML - 顏色名稱
- HTML - RGB
- HTML - HEX
- HTML - HSL
- HTML 表單
- HTML - 表單
- HTML - 表單屬性
- HTML - 表單控制元件
- HTML - 輸入屬性
- HTML 媒體
- HTML - 影片元素
- HTML - 音訊元素
- HTML - 嵌入多媒體
- HTML 頭部
- HTML - Head 元素
- HTML - 新增 Favicon
- HTML - Javascript
- HTML 佈局
- HTML - 佈局
- HTML - 佈局元素
- HTML - 使用 CSS 進行佈局
- HTML - 響應式設計
- HTML - 符號
- HTML - 表情符號
- HTML - 樣式指南
- HTML 圖形
- HTML - SVG
- HTML - Canvas
- HTML APIs
- HTML - Geolocation API
- HTML - 拖放 API
- HTML - Web Workers API
- HTML - WebSocket
- HTML - Web 儲存
- HTML - 伺服器傳送事件
- HTML 其他
- HTML - 文件物件模型 (DOM)
- HTML - MathML
- HTML - 微資料
- HTML - IndexedDB
- HTML - Web 訊息傳遞
- HTML - Web CORS
- HTML - Web RTC
- HTML 演示
- HTML - 音訊播放器
- HTML - 影片播放器
- HTML - 網頁幻燈片
- HTML 工具
- HTML - Velocity Draw
- HTML - 二維碼
- HTML - Modernizer
- HTML - 驗證
- HTML - 顏色拾取器
- HTML 參考
- HTML - 速查表
- HTML - 標籤參考
- HTML - 屬性參考
- HTML - 事件參考
- HTML - 字型參考
- HTML - ASCII 碼
- ASCII 碼錶查詢
- HTML - 顏色名稱
- HTML - 實體
- MIME 媒體型別
- HTML - URL 編碼
- 語言 ISO 程式碼
- HTML - 字元編碼
- HTML - 已棄用的標籤
- HTML 資源
- HTML - 快速指南
- HTML - 有用資源
- HTML - 顏色程式碼生成器
- HTML - 線上編輯器
HTML - WebSockets
WebSockets 是一種用於 Web 應用程式的下一代雙向通訊技術,它透過單個套接字執行。
WebSockets 允許雙向通訊,這意味著客戶端和伺服器可以獨立且同時相互發送資料。
在與 Web 伺服器建立 WebSocket 連線後,我們可以透過呼叫send()
方法將資料從瀏覽器傳送到伺服器,並透過onmessage
事件處理程式接收從伺服器到瀏覽器的數 據。
語法
以下是建立新的 WebSocket 物件的 API
var Socket = new WebSocket(url, [protocol] );
這裡第一個引數 url
指定要連線的 URL。第二個屬性 protocol
是可選的,如果存在,則指定伺服器必須支援才能成功建立連線的子協議。
WebSocket 的屬性
以下是 WebSocket 物件的屬性。假設我們如上所述建立了一個套接字物件
屬性 | 描述 |
---|---|
Socket.readyState | 只讀屬性 readyState 表示連線的狀態。它可以具有以下值:
|
Socket.bufferedAmount | 只讀屬性 bufferedAmount 表示使用 |
WebSocket 事件
以下是與 WebSocket 物件關聯的事件。假設我們如上所述建立了一個套接字物件
事件 | 值與事件處理程式 | 值與描述 |
---|---|---|
open | Socket.onopen | 當套接字連線建立時發生此事件。 |
message | Socket.onmessage | 當客戶端從伺服器接收資料時發生此事件。 |
error | Socket.onerror | 當通訊發生任何錯誤時發生此事件。 |
close | Socket.onclose | 當連線關閉時發生此事件。 |
WebSocket 方法
以下是與 WebSocket 物件關聯的方法。假設我們如上所述建立了一個套接字物件
方法 | 描述 |
---|---|
Socket.send() | send(data) 方法使用連線傳輸資料。 |
Socket.close() | close() 方法用於終止任何現有連線。 |
使用 Python 設定 WebSocket 伺服器
- 步驟 1. 安裝 Python
- 如果您的裝置上沒有安裝 Python,請從Python.org下載並安裝。
- 步驟 2. 安裝 WebSocket 庫
- 安裝 python 後,為您的專案建立一個資料夾,並在命令提示符或終端中開啟該資料夾。然後執行此提示。
pip install websockets
- 步驟 3. 建立 websocket 伺服器
- 開啟任何文字編輯器並編寫以下 Python 程式碼。然後將其另存為名為“server.py”的檔案。
import asyncio import websockets async def echo(websocket, path): async for message in websocket: print(f"Received message: {message}") await websocket.send(f"Server: You said \"{message}\"") start_server = websockets.serve(echo, "localhost", 8080) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever()
- 步驟 4. 執行伺服器
- 在終端中導航到您的專案資料夾,並執行此命令以啟動伺服器。
python server.py
為伺服器設定 HTML 客戶端
到目前為止,我們為 websocket 設定了一個 Python 伺服器。伺服器將在您的終端上執行,因此傳送到伺服器的任何訊息都將在終端上可見。在這裡,我們將瞭解如何設定一個客戶端,該客戶端可以使用 HTML 和 JavaScript 從伺服器接收訊息並向伺服器傳送訊息。
在資料夾中建立一個 HTML 檔案“index.html”。
<!DOCTYPE html> <html lang="en"> <head> <title>WebSocket Example</title> </head> <body> <h1>WebSocket Client</h1> <input type="text" id="messageInput" placeholder="Type a message..." /> <button id="sendButton"> Send </button> <div id="messages"> </div> <script> const socket = new WebSocket('ws://:8080'); socket.addEventListener('open', () => { console.log('Connected to server'); }); socket.addEventListener('message', (event) => { const messageDiv = document.createElement('div'); messageDiv.textContent = event.data; document.getElementById('messages').appendChild(messageDiv); }); document.getElementById('sendButton').addEventListener('click', () => { const messageInput = document.getElementById('messageInput'); const message = messageInput.value; socket.send(message); messageInput.value = ''; }); </script> </body> </html>
廣告