一、什麼是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-tw/n/240243.html