websockets
?websockets est une bibliothèque permettant de créer des serveurs et des clients WebSocket en Python en mettant l'accent sur l'exactitude, la simplicité, la robustesse et les performances.
Construite sur asyncio
, le framework d'E/S asynchrones standard de Python, l'implémentation par défaut fournit une élégante API basée sur la coroutine.
Une implémentation au-dessus du threading
et une implémentation Sans-I/O sont également disponibles.
La documentation est disponible sur Read the Docs.
Voici un serveur d'écho avec l'API asyncio
:
#!/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 ())
Voici comment un client envoie et reçoit des messages avec l'API threading
:
#!/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 ()
Est-ce que ça a l'air bien ?
Commencez avec le tutoriel !
Disponible dans le cadre de l’abonnement Tidelift
Les responsables des websockets et de milliers d'autres packages travaillent avec Tidelift pour fournir un support commercial et une maintenance pour les dépendances open source que vous utilisez pour créer vos applications. Gagnez du temps, réduisez les risques et améliorez la santé du code, tout en rémunérant les responsables des dépendances exactes que vous utilisez. Apprendre encore plus.
(Si vous contribuez aux websockets
et souhaitez devenir un fournisseur de support officiel, faites-le moi savoir.)
websockets
? Le développement des websockets
est façonné par quatre principes :
websockets
sont fortement testés pour leur conformité à la RFC 6455. L'intégration continue échoue sous une couverture de branche à 100 %.msg = await ws.recv()
et await ws.send(msg)
. websockets
s'occupe de la gestion des connexions afin que vous puissiez vous concentrer sur votre application.websockets
sont construits pour la production. Par exemple, c'était la seule bibliothèque à gérer correctement la contre-pression avant que le problème ne soit largement connu dans la communauté Python.La documentation est une préoccupation de première classe dans le projet. Rendez-vous sur Lire la documentation et voyez par vous-même.
websockets
? Si vous préférez les rappels aux coroutines : websockets
a été créé pour fournir la meilleure API basée sur les coroutines pour gérer les connexions WebSocket en Python. Choisissez une autre bibliothèque pour une API basée sur le rappel.
Si vous recherchez une bibliothèque mixte HTTP/WebSocket : websockets
se veut une excellente implémentation de RFC 6455 : The WebSocket Protocol et RFC 7692 : Compression Extensions for WebSocket. Sa prise en charge de HTTP est minime, juste suffisante pour un bilan de santé HTTP.
Si vous souhaitez faire les deux sur le même serveur, examinez les frameworks HTTP qui s'appuient sur websockets
pour prendre en charge les connexions WebSocket, comme Sanic.
Les rapports de bogues, les correctifs et les suggestions sont les bienvenus !
Pour signaler une vulnérabilité de sécurité, veuillez utiliser le contact de sécurité Tidelift. Tidelift coordonnera le correctif et la divulgation.
Pour toute autre chose, veuillez ouvrir un ticket ou envoyer une pull request.
Les participants doivent respecter le code de conduite du Contributor Covenant.
websockets
est publié sous la licence BSD.