skip to navigation
skip to content

websockets 4.0.1

An implementation of the WebSocket Protocol (RFC 6455 & 7692)

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 a client that says “Hello world!”:

#!/usr/bin/env python

import asyncio
import websockets

async def hello(uri):
    async with websockets.connect(uri) as websocket:
        await websocket.send("Hello world!")

asyncio.get_event_loop().run_until_complete(
    hello('ws://localhost:8765'))

And here’s an echo server:

#!/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? Start here.

Why should I use websockets?

The development of websockets is shaped by four principles:

  1. 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.
  2. 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.
  3. Quality: websockets is heavily tested. Continuous integration fails under 100% branch coverage. Also it passes the industry-standard Autobahn Testsuite.
  4. 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 corountine-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 welcome! Just open an issue or send a pull request.

websockets is released under the BSD license.

 
File Type Py Version Uploaded on Size
websockets-4.0.1-cp34-cp34m-macosx_10_6_intel.whl (md5) Python Wheel cp34 2017-11-02 71KB
websockets-4.0.1-cp34-cp34m-manylinux1_i686.whl (md5) Python Wheel cp34 2017-11-02 76KB
websockets-4.0.1-cp34-cp34m-manylinux1_x86_64.whl (md5) Python Wheel cp34 2017-11-02 77KB
websockets-4.0.1-cp34-cp34m-win32.whl (md5) Python Wheel cp34 2017-11-02 71KB
websockets-4.0.1-cp34-cp34m-win_amd64.whl (md5) Python Wheel cp34 2017-11-02 71KB
websockets-4.0.1-cp35-cp35m-macosx_10_6_intel.whl (md5) Python Wheel cp35 2017-11-02 72KB
websockets-4.0.1-cp35-cp35m-manylinux1_i686.whl (md5) Python Wheel cp35 2017-11-02 77KB
websockets-4.0.1-cp35-cp35m-manylinux1_x86_64.whl (md5) Python Wheel cp35 2017-11-02 78KB
websockets-4.0.1-cp35-cp35m-win32.whl (md5) Python Wheel cp35 2017-11-02 74KB
websockets-4.0.1-cp35-cp35m-win_amd64.whl (md5) Python Wheel cp35 2017-11-02 74KB
websockets-4.0.1-cp36-cp36m-macosx_10_6_intel.whl (md5) Python Wheel cp36 2017-11-02 73KB
websockets-4.0.1-cp36-cp36m-manylinux1_i686.whl (md5) Python Wheel cp36 2017-11-02 79KB
websockets-4.0.1-cp36-cp36m-manylinux1_x86_64.whl (md5) Python Wheel cp36 2017-11-02 79KB
websockets-4.0.1-cp36-cp36m-win32.whl (md5) Python Wheel cp36 2017-11-02 75KB
websockets-4.0.1-cp36-cp36m-win_amd64.whl (md5) Python Wheel cp36 2017-11-02 76KB
websockets-4.0.1.tar.gz (md5) Source 2017-11-02 60KB