Github: https://github.com/aaugustin/websockets
WebSockets
websockets
とは何ですか?
websockets
は、WebSocket サーバーとクライアントをPythonで構築するためのライブラリであり、正確さとシンプルさに重点を置いています。
Pythonの標準非同期I / Oフレームワークであるasyncio
上に構築されており、洗練されたコルーチンベースのAPIを提供します。
“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'))
そして、エコーサーバがあります(Python≧3.6の場合):
#!/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()
それは良い見えますか? ここから始めてください 。
なぜwebsockets
を使うべきですか?
websockets
の開発は、4つの原則によって形作られています。
- シンプルさ :あなたが理解する必要があるのは、
msg = await ws.recv()
とawait ws.send(msg)
です。websockets
は接続の管理を行い、アプリケーションに集中することができます。 - 堅牢性 :
websockets
は本稼動のために構築されています。 たとえば、問題がPythonコミュニティで広く知られる前に、 バックプレッシャーを正しく処理するのは唯一のライブラリでした。 - 品質 :
websockets
は大量にテストされています。 ブランチカバレッジ100%で継続的な統合が失敗します。 また、業界標準のAutobahn Testsuiteにも合格します。 - パフォーマンス :メモリの使用は設定可能です。 Cで書かれた拡張機能は高価な操作を加速します。 Linux、macOS、Windows用にあらかじめコンパイルされ、各システムとPythonバージョンのホイールフォーマットでパッケージ化されています。
ドキュメンテーションは、プロジェクトの第一の関心事です。 Docsを読んであなた自身のために見に行きましょう。
あなた(またはあなたの会社)がそのように傾けられている場合、プロフェッショナルサポートが利用可能です。 連絡してください 。
( websockets
貢献して公式のサポートプロバイダになりたい場合は、教えてください)
なぜ私はwebsockets
を使用すべきではないのですか?
- コルーチンよりもコールバックを好む場合:WebSocketをPythonで管理するための最良のコルーチンベースのAPIを提供するために
websockets
が作成されました。 コールバックベースのAPIの別のライブラリを選択します。 - 混在したHTTP / WebSocketライブラリを探している場合:
websockets
は、WebSocketプロトコルとRFC 7692 :WebSocket用のCompression Extensionsの優れた実装であることを目指しています。 HTTPのサポートは最小限で、HTTPヘルスチェックに十分です。 - Python 2を使用したい場合:
websockets
はasyncio
構築され、Python 3でのみ動作します。asyncio
にはPython≧3.4が必要です。
ほかに何か?
バグレポート、パッチ、提案を歓迎します! 問題を開くか、 プルリクエストを送信するだけです。
websockets
はBSDライセンスの下でリリースされています。