|
16 | 16 | Please work with your team to choose a library that everyone can and want to develop with.
|
17 | 17 | If there is a library not listed below that you think should be here, you're welcome to discuss it with the Events Team over at <a href="https://discord.gg/HnGd3znxhJ">the server</a>.
|
18 | 18 | </p>
|
| 19 | + |
| 20 | + <div class="notification is-info is-light"> |
| 21 | + <p>Most of the below frameworks implement what is called the ASGI Specification. |
| 22 | + This specification documents how the frameworks should interact with ASGI servers. |
| 23 | + You are also allowed to <strong>work with the ASGI specification directly</strong> without a framework, if your team so chooses to. |
| 24 | + Refer to the <a href="https://asgi.readthedocs.io/en/latest/">specification online</a>. |
| 25 | + </p> |
| 26 | + </div> |
| 27 | + |
| 28 | + <h3 id="approved-frameworks"><a href="#approved-frameworks">Approved Frameworks</a></h3> |
| 29 | + |
19 | 30 | <div class="card mb-4">
|
20 | 31 | <div class="card-content">
|
21 | 32 | <div class="content">
|
22 |
| - <p class="subtitle">websockets</p> |
23 |
| - <p class="is-italic">websockets is a library for building WebSocket servers and clients in Python with a focus on correctness, simplicity, robustness, and performance. |
24 |
| - Built on top of asyncio, Python’s standard asynchronous I/O framework, it provides an elegant coroutine-based API. |
25 |
| - </p> |
| 33 | + <p class="subtitle">FastAPI</p> |
| 34 | + <p>FastAPI is a modern web framework great for WebSockets based on standard Python type hints which provides great editor support.</p> |
26 | 35 | </div>
|
27 | 36 | </div>
|
28 | 37 | <div class="card-footer">
|
29 |
| - <a href="https://websockets.readthedocs.io/en/stable" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
30 |
| - <a href="https://github.com/aaugustin/websockets" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
| 38 | + <a href="https://fastapi.tiangolo.com/advanced/websockets" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
| 39 | + <a href="https://github.com/tiangolo/fastapi" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
31 | 40 | </div>
|
32 | 41 | </div>
|
| 42 | + |
33 | 43 | <div class="card mb-4">
|
34 | 44 | <div class="card-content">
|
35 | 45 | <div class="content">
|
36 |
| - <p class="subtitle">Flask-SocketIO</p> |
37 |
| - <p class="is-italic">Flask-SocketIO gives Flask applications access to low latency bi-directional communications between the clients and the server. |
| 46 | + <p class="subtitle">Starlette</p> |
| 47 | + <p>Starlette is a lightweight ASGI framework/toolkit, which is ideal for building async web services in Python. |
38 | 48 | </p>
|
39 | 49 | </div>
|
40 | 50 | </div>
|
41 | 51 | <div class="card-footer">
|
42 |
| - <a href="https://flask-socketio.readthedocs.io/en/latest" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
43 |
| - <a href="https://github.com/miguelgrinberg/flask-socketio" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
| 52 | + <a href="https://www.starlette.io/websockets" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
| 53 | + <a href="https://github.com/encode/starlette" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
44 | 54 | </div>
|
45 | 55 | </div>
|
| 56 | + |
46 | 57 | <div class="card mb-4">
|
47 | 58 | <div class="card-content">
|
48 | 59 | <div class="content">
|
49 |
| - <p class="subtitle">Django Channels</p> |
50 |
| - <p class="is-italic">Channels is a project that takes Django and extends its abilities beyond HTTP - to handle WebSockets, chat protocols, IoT protocols, and more. |
51 |
| - It’s built on a Python specification called ASGI. |
| 60 | + <p class="subtitle">websockets</p> |
| 61 | + <p>websockets is a library for building both WebSocket clients and servers with focus on simplicity and performance. |
52 | 62 | </p>
|
53 | 63 | </div>
|
54 | 64 | </div>
|
55 | 65 | <div class="card-footer">
|
56 |
| - <a href="https://channels.readthedocs.io/en/stable" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
57 |
| - <a href="https://github.com/django/channels" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
| 66 | + <a href="https://websockets.readthedocs.io/en/stable" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
| 67 | + <a href="https://github.com/aaugustin/websockets" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
58 | 68 | </div>
|
59 | 69 | </div>
|
| 70 | + |
60 | 71 | <div class="card mb-4">
|
61 | 72 | <div class="card-content">
|
62 | 73 | <div class="content">
|
63 |
| - <p class="subtitle">wsproto</p> |
64 |
| - <p class="is-italic">wsproto is a WebSocket protocol stack written to be as flexible as possible. |
65 |
| - To that end it is written in pure Python and performs no I/O of its own. |
66 |
| - Instead it relies on the user to provide a bridge between it and whichever I/O mechanism is in use, allowing it to be used in single-threaded, multi-threaded or event-driven code. |
| 74 | + <p class="subtitle">Django Channels</p> |
| 75 | + <p>Django Channels adds WebSocket-support to Django - built on ASGI like other web frameworks. |
67 | 76 | </p>
|
68 | 77 | </div>
|
69 | 78 | </div>
|
70 | 79 | <div class="card-footer">
|
71 |
| - <a href="https://python-hyper.org/projects/wsproto/en/stable" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
72 |
| - <a href="https://github.com/python-hyper/wsproto" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
| 80 | + <a href="https://channels.readthedocs.io/en/stable" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
| 81 | + <a href="https://github.com/django/channels" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
73 | 82 | </div>
|
74 | 83 | </div>
|
| 84 | + |
75 | 85 | <div class="card mb-4">
|
76 | 86 | <div class="card-content">
|
77 | 87 | <div class="content">
|
78 |
| - <p class="subtitle">Starlette</p> |
79 |
| - <p class="is-italic">Starlette is a lightweight ASGI framework/toolkit, which is ideal for building async web services in Python. |
| 88 | + <p class="subtitle">Flask-SocketIO</p> |
| 89 | + <p>Flask-SocketIO gives Flask applications access to low latency bi-directional communications between the clients and the server. |
80 | 90 | </p>
|
81 | 91 | </div>
|
82 | 92 | </div>
|
83 | 93 | <div class="card-footer">
|
84 |
| - <a href="https://www.starlette.io/websockets" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
85 |
| - <a href="https://github.com/encode/starlette" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
| 94 | + <a href="https://flask-socketio.readthedocs.io/en/latest" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
| 95 | + <a href="https://github.com/miguelgrinberg/flask-socketio" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
86 | 96 | </div>
|
87 | 97 | </div>
|
88 |
| - <div class="card mb"> |
| 98 | + |
| 99 | + <div class="card mb-4"> |
89 | 100 | <div class="card-content">
|
90 | 101 | <div class="content">
|
91 |
| - <p class="subtitle">FastAPI</p> |
92 |
| - <p class="is-italic">FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. |
| 102 | + <p class="subtitle">wsproto</p> |
| 103 | + <p>wsproto is a pure-Python WebSocket protocol stack written to be as flexible as possible by having the user build the bridge to the I/O. |
93 | 104 | </p>
|
94 | 105 | </div>
|
95 | 106 | </div>
|
96 | 107 | <div class="card-footer">
|
97 |
| - <a href="https://fastapi.tiangolo.com/advanced/websockets" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
98 |
| - <a href="https://github.com/tiangolo/fastapi" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
| 108 | + <a href="https://python-hyper.org/projects/wsproto/en/stable" class="card-footer-item"><i class="fas fa-book"></i> Documentation</a> |
| 109 | + <a href="https://github.com/python-hyper/wsproto" class="card-footer-item"><i class="fab fa-github"></i> GitHub</a> |
99 | 110 | </div>
|
100 | 111 | </div>
|
101 | 112 |
|
|
0 commit comments