websockets
?websockets ist eine Bibliothek zum Erstellen von WebSocket-Servern und -Clients in Python mit Schwerpunkt auf Korrektheit, Einfachheit, Robustheit und Leistung.
Die Standardimplementierung basiert auf asyncio
, dem standardmäßigen asynchronen E/A-Framework von Python, und bietet eine elegante Coroutine-basierte API.
Eine Implementierung zusätzlich zum threading
und eine Sans-I/O-Implementierung sind ebenfalls verfügbar.
Die Dokumentation finden Sie unter „Read the Docs“.
Hier ist ein Echo-Server mit der 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 . get_running_loop (). create_future () # run forever
asyncio . run ( main ())
So sendet und empfängt ein Client Nachrichten mit der threading
-API:
#!/usr/bin/env python
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 ()
Sieht das gut aus?
Beginnen Sie mit dem Tutorial!
Verfügbar als Teil des Tidelift-Abonnements
Die Betreuer von Websockets und Tausenden anderer Pakete arbeiten mit Tidelift zusammen, um kommerziellen Support und Wartung für die Open-Source-Abhängigkeiten bereitzustellen, die Sie zum Erstellen Ihrer Anwendungen verwenden. Sparen Sie Zeit, reduzieren Sie Risiken und verbessern Sie den Zustand des Codes, während Sie gleichzeitig die Betreuer der genauen Abhängigkeiten bezahlen, die Sie verwenden. Erfahren Sie mehr.
(Wenn Sie zu websockets
beitragen und offizieller Support-Anbieter werden möchten, lassen Sie es mich wissen.)
websockets
verwenden? Die Entwicklung von websockets
ist von vier Prinzipien geprägt:
websockets
werden intensiv auf Konformität mit RFC 6455 getestet. Die kontinuierliche Integration schlägt bei einer Zweigstellenabdeckung von 100 % fehl.msg = await ws.recv()
await ws.send(msg)
. websockets
kümmert sich um die Verwaltung der Verbindungen, sodass Sie sich auf Ihre Anwendung konzentrieren können.websockets
sind für die Produktion konzipiert. Beispielsweise war sie die einzige Bibliothek, die den Gegendruck korrekt verarbeitete, bevor das Problem in der Python-Community allgemein bekannt wurde.Die Dokumentation ist im Projekt ein erstklassiges Anliegen. Gehen Sie zu „Read the Docs“ und überzeugen Sie sich selbst.
websockets
verwenden? Wenn Sie Rückrufe gegenüber Coroutinen bevorzugen: websockets
wurde entwickelt, um die beste Coroutine-basierte API für die Verwaltung von WebSocket-Verbindungen in Python bereitzustellen. Wählen Sie eine andere Bibliothek für eine Callback-basierte API.
Wenn Sie nach einer gemischten HTTP-/WebSocket-Bibliothek suchen: websockets
zielt darauf ab, eine hervorragende Implementierung von RFC 6455: Das WebSocket-Protokoll und RFC 7692: Komprimierungserweiterungen für WebSocket zu sein. Die Unterstützung für HTTP ist minimal – gerade genug für eine HTTP-Gesundheitsprüfung.
Wenn Sie beides auf demselben Server tun möchten, schauen Sie sich HTTP-Frameworks an, die auf websockets
aufbauen, um WebSocket-Verbindungen zu unterstützen, wie z. B. Sanic.
Fehlerberichte, Patches und Vorschläge sind willkommen!
Um eine Sicherheitslücke zu melden, wenden Sie sich bitte an den Sicherheitskontakt von Tidelift. Tidelift wird die Behebung und Offenlegung koordinieren.
Für alles andere öffnen Sie bitte ein Issue oder senden Sie eine Pull-Anfrage.
Die Teilnehmer müssen den Verhaltenskodex der Contributor Covenant einhalten.
websockets
wird unter der BSD-Lizenz veröffentlicht.