一、什麼是Websockets
Websockets是一種在單個TCP連接上進行全雙工通信的協議。與HTTP請求-響應不同,Websockets允許服務器主動向客戶端推送信息而不需要客戶端首先發送請求。這使得Websockets非常適合實時Web應用程序,如聊天室、實時協作和實時遊戲。
Websockets使用了一個獨立的數據幀格式,由協議處理消息和處理錯誤以及連接管理。
Python Websockets是一個用於WebSocket服務器和客戶端編程的庫。它允許我們編寫與 Websockets 兼容的客戶端和服務器,使數據傳輸更加實時。
二、Python Websockets 的安裝
在 Linux 系統中,通過命令行安裝 Python Websockets:
pip3 install websockets
三、使用Python Websockets構建實時Web應用
1. 創建WebSocket服務器
要創建Websockets服務器,我們需要使用 Python 的 asyncio 和 websockets 庫。
import asyncio
import websockets
async def server(websocket, path):
async for message in websocket:
await websocket.send(message)
async def main():
async with websockets.serve(server, 'localhost', 8000):
await asyncio.Future() # run forever
asyncio.run(main())
上面的代碼創建了一個在本地主機的 8000 端口上運行的 WebSocket 服務器。在連接建立、斷開和數據傳輸期間,server() 方法將被調用。
2. 創建WebSocket客戶端
要連接並發送數據到WebSocket服務器,需要創建一個WebSocket客戶端。在 Python 中,我們可以使用Websockets庫來創建WebSocket客戶端。
import asyncio
import websockets
async def client():
async with websockets.connect('ws://localhost:8000') as websocket:
await websocket.send('Hello, WebSocket!')
response = await websocket.recv()
print(response)
asyncio.run(client())
上面的代碼創建了一個WebSocket客戶端,它連接到本地主機的 8000 端口。它向服務器發送消息,並打印出服務器的響應。
3. 使用Websockets構建聊天室
Websockets還可以用於構建實時聊天室。
以下是一個使用Websockets構建聊天室的簡單示例:
服務器代碼:
import asyncio
import websockets
async def server(websocket, path):
async for message in websocket:
for ws in websockets:
await ws.send(message)
websockets = set()
async def main():
async with websockets.serve(server, 'localhost', 8000):
await asyncio.Future() # run forever
asyncio.run(main())
客戶端代碼:
import asyncio
import websockets
async def client():
async with websockets.connect('ws://localhost:8000') as websocket:
while True:
message = input('Enter message: ')
await websocket.send(message)
asyncio.run(client())
使用以上代碼來運行服務器和多個客戶端,各個客戶端發送的消息都將廣播到其他客戶端。
四、總結
Python Websockets是使用Python進行Websockets編程的一個非常有用的工具。它為我們提供了一個簡單而強大的方式,可以使我們嘗試構建實時應用程序,如聊天室、實時協作和實時遊戲。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/240243.html