websockets 是一个专注于正确性、简洁性、健壮性和性能的Python库,用于构建WebSocket服务器和客户端。
它支持多种网络I/O和控制流范式:
下面是一个使用asyncio API的回显服务器示例:
#!/usr/bin/env python
import asyncio
from websockets.server import serve
async def echo(websocket):
async for message in websocket:
await websocket.send(message)
async def main():
async with serve(echo, "localhost", 8765):
await asyncio.Future() # run forever
asyncio.run(main())
下面是一个使用threading API发送和接收消息的客户端示例:
#!/usr/bin/env python
import asyncio
from websockets.sync.client import connect
def hello():
with connect("ws://localhost:8765") as websocket:
websocket.send("Hello world!")
message = websocket.recv()
print(f"Received: {message}")
hello()
不必担心握手、ping和pong等细节,WebSocket规范中的其他行为,websockets会在幕后自动处理,这样你就可以专注于你的应用程序!
此外,websockets还提供了一个交互式客户端:
python -m websockets ws://localhost:8765/
Connected to ws://localhost:8765/.
> Hello world!
< Hello world!
Connection closed: 1000 (OK).