websockets
?websockets adalah perpustakaan untuk membangun server dan klien WebSocket dengan Python dengan fokus pada kebenaran, kesederhanaan, ketahanan, dan kinerja.
Dibangun di atas asyncio
, kerangka kerja I/O asinkron standar Python, implementasi default menyediakan API berbasis coroutine yang elegan.
Implementasi di atas threading
dan implementasi Sans-I/O juga tersedia.
Dokumentasi tersedia di Baca Dokumen.
Inilah server gema dengan 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 ())
Berikut cara klien mengirim dan menerima pesan dengan 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 ()
Apakah itu terlihat bagus?
Mulailah dengan tutorialnya!
Tersedia sebagai bagian dari Langganan Tidelift
Pengelola websockets dan ribuan paket lainnya bekerja sama dengan Tidelift untuk memberikan dukungan komersial dan pemeliharaan untuk dependensi sumber terbuka yang Anda gunakan untuk membangun aplikasi Anda. Menghemat waktu, mengurangi risiko, dan meningkatkan kesehatan kode, sekaligus membayar pengelola dependensi yang Anda gunakan. Pelajari lebih lanjut.
(Jika Anda berkontribusi pada websockets
dan ingin menjadi penyedia dukungan resmi, beri tahu saya.)
websockets
? Pengembangan websockets
dibentuk oleh empat prinsip:
websockets
diuji secara ketat untuk kepatuhan terhadap RFC 6455. Integrasi berkelanjutan gagal dalam cakupan cabang 100%.msg = await ws.recv()
dan await ws.send(msg)
. websockets
menangani pengelolaan koneksi sehingga Anda dapat fokus pada aplikasi Anda.websockets
dibuat untuk produksi. Misalnya, ini adalah satu-satunya perpustakaan yang menangani tekanan balik dengan benar sebelum masalah ini diketahui secara luas di komunitas Python.Dokumentasi adalah perhatian kelas satu dalam proyek ini. Kunjungi Baca Dokumen dan lihat sendiri.
websockets
? Jika Anda lebih memilih callback daripada coroutine: websockets
dibuat untuk menyediakan API berbasis coroutine terbaik untuk mengelola koneksi WebSocket dengan Python. Pilih perpustakaan lain untuk API berbasis panggilan balik.
Jika Anda mencari perpustakaan campuran HTTP/WebSocket: websockets
bertujuan untuk menjadi implementasi yang sangat baik dari RFC 6455: Protokol WebSocket dan RFC 7692: Ekstensi Kompresi untuk WebSocket. Dukungannya terhadap HTTP sangat minim — cukup untuk pemeriksaan kesehatan HTTP.
Jika Anda ingin melakukan keduanya di server yang sama, lihat kerangka kerja HTTP yang dibangun di atas websockets
untuk mendukung koneksi WebSocket, seperti Sanic.
Laporan bug, tambalan, dan saran dipersilakan!
Untuk melaporkan kerentanan keamanan, silakan gunakan kontak keamanan Tidelift. Tidelift akan mengoordinasikan perbaikan dan pengungkapan.
Untuk hal lainnya, silakan buka masalah atau kirim permintaan penarikan.
Peserta harus menjunjung tinggi kode etik Perjanjian Kontributor.
websockets
dirilis di bawah lisensi BSD.