websockets
とは何ですか?websockets は、正確さ、シンプルさ、堅牢性、パフォーマンスに重点を置いて、Python で WebSocket サーバーとクライアントを構築するためのライブラリです。
Python の標準非同期 I/O フレームワークであるasyncio
上に構築されたデフォルトの実装は、エレガントなコルーチン ベースの API を提供します。
threading
上の実装や Sans-I/O 実装も利用できます。
ドキュメントは「Read the Docs」から入手できます。
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 ())
クライアントが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 ()
それは良さそうですか?
チュートリアルから始めましょう!
Tidelift サブスクリプションの一部として利用可能
Websocket や他の何千ものパッケージの管理者は、Tidelift と協力して、アプリケーションの構築に使用するオープンソースの依存関係に対する商用サポートとメンテナンスを提供しています。使用する正確な依存関係の保守者に料金を支払いながら、時間を節約し、リスクを軽減し、コードの健全性を向上させます。もっと詳しく知る。
( websockets
に貢献していて、公式サポートプロバイダーになりたい場合は、私に知らせてください。)
websockets
使用する必要があるのはなぜですか? websockets
の開発は、次の 4 つの原則によって形成されます。
websockets
RFC 6455 への準拠について厳しくテストされています。ブランチ カバレッジが 100% 未満では継続的インテグレーションは失敗します。msg = await ws.recv()
とawait ws.send(msg)
だけです。 websockets
接続の管理を行うので、ユーザーはアプリケーションに集中できます。websockets
は実稼働用に構築されています。たとえば、この問題が Python コミュニティで広く知られるようになる前は、バックプレッシャーを正しく処理できる唯一のライブラリでした。ドキュメントはプロジェクトにおける最重要事項です。 「ドキュメントを読む」にアクセスして、自分の目で確認してください。
websockets
使用してはいけないのはなぜですか?コルーチンよりもコールバックを好む場合: websockets
Python で WebSocket 接続を管理するための最適なコルーチン ベースの API を提供するために作成されました。コールバックベースの API には別のライブラリを選択してください。
混合 HTTP / WebSocket ライブラリを探している場合: websockets
RFC 6455: WebSocket プロトコルと RFC 7692: Compression Extensions for WebSocket の優れた実装を目指しています。 HTTP のサポートは最小限であり、HTTP ヘルスチェックには十分です。
同じサーバーで両方を実行したい場合は、Sanic などwebsockets
上に構築されて WebSocket 接続をサポートする HTTP フレームワークを検討してください。
バグレポート、パッチ、提案は大歓迎です。
セキュリティの脆弱性を報告するには、Tidelift のセキュリティ連絡先を使用してください。 Tidelift が修正と公開を調整します。
それ以外の場合は、問題を開くか、プル リクエストを送信してください。
参加者は貢献者規約の行動規範を遵守する必要があります。
websockets
BSD ライセンスに基づいてリリースされています。