XAsyncSockets adalah pustaka Python/MicroPython yang efisien untuk soket asinkron terkelola.

Sangat mudah diintegrasikan dan sangat ringan hanya dengan satu file :
Fitur XAsyncSockets:
- Soket asinkron terkelola dalam satu kumpulan (hingga ribuan!)
- Bekerja langsung dengan I/O untuk menerima dan mengirim dengan sangat cepat
- Mendukung sejumlah besar koneksi TCP simultan
- Mendukung operasi pemrosesan sinkron secara bersamaan jika perlu (berulir)
- Implementasi server TCP
- Implementasi klien TCP
- Implementasi datagram UDP (pengirim dan/atau penerima)
- Klien TCP dapat melakukan event setelah ukuran data atau baris teks tertentu diterima
- Setiap koneksi dan penerimaan dapat menunggu selama waktu tertentu
- Alasan penutupan klien TCP dikembalikan
- Sangat kuat, sangat cepat dan mudah digunakan
- Kompatibel dengan implementasi MicroPython (lapisan soket, antrian FiFo, penghitung kinerja)

Kelas XAsyncSockets :
| Nama kelas | Keterangan |
|---|
| XAsyncSocketsPool | Kumpulan objek 'XAsyncSocket' yang dikelola |
| XAlasan Tertutup | Enumerator alasan penutupan 'XAsyncSocket' |
| XAsyncSocket | Kelas abstrak dari soket asinkron yang dikelola |
| XAsyncTCPServer | Implementasi server TCP dari 'XAsyncSocket' |
| Klien XAsyncTCPC | Implementasi klien TCP dari 'XAsyncSocket' |
| XAsyncUDPDatagram | Implementasi pengirim/penerima UDP dari 'XAsyncSocket' |
| XBufferSlot | Buffer terkelola |
| XBufferSlots | Koleksi buffer terkelola |
| XFiFo | Antrean FiFo khusus |
Pengecualian XAsyncSockets :
| Nama kelas | Keterangan |
|---|
| XAsyncSocketsPoolException | Kelas pengecualian untuk 'XAsyncSocketsPool' |
| XAsyncSocketException | Kelas pengecualian untuk 'XAsyncSocket' |
| XAsyncTCPServerException | Kelas pengecualian untuk 'XAsyncTCPServer' |
| XAsyncTCPClientException | Kelas pengecualian untuk 'XAsyncTCPClient' |
| XAsyncUDPDatagramException | Kelas pengecualian untuk 'XAsyncUDPDatagram' |
| XFiFoException | Kelas pengecualian untuk 'XFiFo' |
Detail kelas XAsyncSocketsPool :
| Metode | Argumen |
|---|
| Konstruktor | Tidak ada |
| DapatkanSemuaAsyncSockets | Tidak ada |
| DapatkanAsyncSocketByID | id (int) |
| Acara AsyncWait | threadsCount=0 (int) |
| HentikanTungguAcara | Tidak ada |
| Milik | Detail |
|---|
| TungguPemrosesan Acara | Kembalikan True jika "WaitEvents" sedang diproses |
( Jangan langsung memanggil metode AddAsyncSocket , RemoveAsyncSocket , NotifyNextReadyForReading dan NotifyNextReadyForWriting )
Detail kelas XClosedReason :
| Variabel statis | Nilai |
|---|
| Kesalahan | 0x00 |
| Ditutup OlehHost | 0x01 |
| Ditutup Oleh Rekan | 0x02 |
| Batas waktu | 0x03 |
Detail kelas XAsyncSocket :
| Metode | Argumen |
|---|
| DapatkanAsyncSocketsPool | Tidak ada |
| DapatkanSocketObj | Tidak ada |
| Menutup | Tidak ada |
| Milik | Detail |
|---|
| IDSoket | Dapatkan ID unik soket yang dibuka |
| Sedang Tertutup | Dapatkan atau atur acara bertipe f(closedReason) |
| Negara | Dapatkan atau atur objek khusus |
Detail kelas XAsyncTCPServer :
| Metode | Argumen |
|---|
| Buat (statis) | asyncSocketsPool , srvAddr (tuple ip dan port), srvBacklog=256 (int), bufSlots=None |
| Milik | Detail |
|---|
| SrvAddr | Tuple ip dan port |
| DiKlien Diterima | Dapatkan atau setel peristiwa bertipe f(xAsyncTCPServer, xAsyncTCPClient) |
Detail kelas XAsyncTCPClient :
| Metode | Argumen |
|---|
| Buat (statis) | asyncSocketsPool , srvAddr (tupel ip dan port), connectTimeout=5 (int), recvBufLen=4096 (int), sendBufLen=4096 (int), connectAsync=True (bool) |
| AsyncRecvLine | lineEncoding='UTF-8' , onLineRecv=None (fungsi), onLineRecvArg=None (objek) , timeoutSec=None (int) |
| AsyncRecvData | size=None (int), onDataRecv=None (fungsi), onDataRecvArg=None (objek), timeoutSec=None (int) |
| AsyncSendData | data (byte atau protokol buffer), onDataSent=None (fungsi), onDataSentArg=None (objek) |
| AsyncSendSendingBuffer | size=None (int), onDataSent=None (fungsi), onDataSentArg=None (objek) |
| MulaiSSL | keyfile=None , certfile=None , server_side=False , cert_reqs=ssl.CERT_NONE , ca_certs=None |
| MulaiSSLContext | sslContext , serverSide=False |
-
onLineRecv adalah acara panggilan balik bertipe f(xAsyncTCPClient, line, arg) -
onDataRecv adalah acara panggilan balik bertipe f(xAsyncTCPClient, data, arg) -
onDataSent adalah acara panggilan balik bertipe f(xAsyncTCPClient, arg) -
StartSSL dan StartSSLContext tidak berfungsi di MicroPython (dalam mode soket non-pemblokiran asinkron) - Sangat disarankan untuk menggunakan
StartSSLContext daripada StartSSL (versi lama)
| Milik | Detail |
|---|
| SrvAddr | Tuple ip dan port |
| CliAddr | Tuple ip dan port |
| AdalahSSL | Kembalikan True jika SSL digunakan |
| MengirimBuffer | Dapatkan buffer yang ada (memoryview) yang digunakan untuk mengirim data |
| OnFailsToConnect | Dapatkan atau atur acara bertipe f(xAsyncTCPClient) |
| Sedang Terhubung | Dapatkan atau atur acara bertipe f(xAsyncTCPClient) |
Detail kelas XAsyncUDPDatagram :
| Metode | Argumen |
|---|
| Buat (statis) | asyncSocketsPool , localAddr=None (tuple ip dan port), recvBufLen=4096 (int), broadcast=False (bool) |
| AsyncSendDatagram | datagram (byte atau protokol buffer), remoteAddr (tupel ip dan port), onDataSent=None (fungsi), onDataSentArg=None (objek) |
- onDataSent adalah acara panggilan balik bertipe f(xAsyncUDPDatagram, arg)
| Milik | Detail |
|---|
| Addr Lokal | Tuple ip dan port |
| PadaRecv | Dapatkan atau atur acara bertipe f(xAsyncUDPDatagram, remoteAddr, datagram) |
| OnFailsToSend | Dapatkan atau atur acara bertipe f(xAsyncUDPDatagram, datagram, remoteAddr) |
Detail kelas XBufferSlot :
| Metode | Argumen |
|---|
| Konstruktor | size (int), keepAlloc=True (bool) |
| Milik | Detail |
|---|
| Tersedia | Dapatkan atau atur ketersediaan slot |
| Ukuran | Dapatkan ukuran buffer slot |
| Penyangga | Dapatkan buffer slot |
Detail kelas XBufferSlots :
| Metode | Argumen |
|---|
| Konstruktor | slotsCount (int), slotsSize (int), keepAlloc=True (bool) |
| DapatkanSlot yang Tersedia | Tidak ada |
| Milik | Detail |
|---|
| Jumlah Slot | Dapatkan jumlah slot |
| Ukuran Slot | Dapatkan ukuran buffer setiap slot |
| slot | Dapatkan daftar slot |
Detail kelas XFiFo :
| Metode | Argumen |
|---|
| Konstruktor | Tidak ada |
| Meletakkan | obj (objek) |
| Mendapatkan | Tidak ada |
| Jernih | Tidak ada |
| Milik | Detail |
|---|
| Kosong | Kembalikan True jika FiFo kosong |
Oleh JC`zic untuk HC² ;')
Tetap sederhana, bodoh ?