相关链接:https://websockets.readthedocs.io/en/stable/intro.html#python-lt-36
开始
要求
websockets 需要 3.4 或者以上版本的 Python,若可能应使用最新版本。为了获得最佳体验,应该从3.6 以上版本开始。asyncio 在Python3.4 和 3.6 之间产生了有趣的改进。
安装
pip install websockets
基础示例
以下是一个websocket 的服务端示例:它从客户端读取姓名,发送问候,然后关闭连接。
#!/usr/bin/env python
# WS server example
import asyncio
import websockets
async def hello(websocket, path):
name = await websocket.recv()
print(f"< {name}")
greeting = f"Hello {name}!"
await websocket.send(greeting)
print(f"> {greeting}")
start_server = websockets.serve(hello, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
在服务器端,websockets 为每个websocket连接执行一次协程处理程序 hello,并且在该程序返回的时候关闭连接。
这是一个相应的websoclet客户端的示例:
#!/usr/bin/env python
# WS client example
import asyncio
import websockets
async def hello():
async with websockets.connect(
'ws://localhost:8765') as websocket:
name = input("What's your name? ")
await websocket.send(name)
print(f"> {name}")
greeting = await websocket.recv()
print(f"< {greeting}")
asyncio.get_event_loop().run_until_complete(hello())
使用 connect() 作为异步的上下文管理器可以确保在退出 hello 协程之前关闭连接。