赞
踩
WebSockets
What is websockets?
websockets is a library for building WebSocket servers and clients in
Python with a focus on correctness and simplicity.
Built on top of asyncio, Python's standard asynchronous I/O framework, it
provides an elegant coroutine-based API.
Here's how a client sends and receives messages (Python ≥ 3.6):
#!/usr/bin/env python
import asyncio
import websockets
async def hello(uri):
async with websockets.connect(uri) as websocket:
await websocket.send("Hello world!")
await websocket.recv()
asyncio.get_event_loop().run_until_complete(
hello('ws://localhost:8765'))
And here's an echo server (Python ≥ 3.6):
#!/usr/bin/env python
import asyncio
import websockets
async def echo(websocket, path):
async for message in websocket:
await websocket.send(message)
asyncio.get_event_loop().run_until_complete(
websockets.serve(echo, 'localhost', 8765))
asyncio.get_event_loop().run_forever()
Does that look good?
Why should I use websockets?
The development of websockets is shaped by four principles:
Simplicity: all you need to understand is msg = await ws.recv() and
await ws.send(msg); websockets takes care of managing connections
so you can focus on your application.
Robustness: websockets is built for production; for example it was
the only library to handle backpressure correctly before the issue
became widely known in the Python community.
Quality: websockets is heavily tested. Continuous integration fails
under 100% branch coverage. Also it passes the industry-standard Autobahn
Testsuite.
Performance: memory use is configurable. An extension written in C
accelerates expensive operations. It's pre-compiled for Linux, macOS and
Windows and packaged in the wheel format for each system and Python version.
Documentation is a first class concern in the project. Head over to Read the
Docs and see for yourself.
Professional support is available if you — or your company — are so inclined.
Get in touch.
(If you contribute to websockets and would like to become an official
support provider, let me know.)
Why shouldn't I use websockets?
If you prefer callbacks over coroutines: websockets was created to
provide the best coroutine-based API to manage WebSocket connections in
Python. Pick another library for a callback-based API.
If you're looking for a mixed HTTP / WebSocket library: websockets aims
at being an excellent implementation of RFC 6455: The WebSocket Protocol
and RFC 7692: Compression Extensions for WebSocket. Its support for HTTP
is minimal — just enough for a HTTP health check.
If you want to use Python 2: websockets builds upon asyncio which
only works on Python 3. websockets requires Python ≥ 3.4.
What else?
Bug reports, patches and suggestions are welcome!
Please open an issue or send a pull request.
websockets is released under the BSD license.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。