XAsyncSockets
XAsyncSockets is an efficient Python/MicroPython library of managed asynchronous sockets.
Install / Use
/learn @jczic/XAsyncSocketsREADME
XAsyncSockets is an efficient Python/MicroPython library of managed asynchronous sockets.

Very easy to integrate and very light with one file only :
"XAsyncSockets.py"
XAsyncSockets features :
- Managed asynchronous sockets in a pool (up to thousands!)
- Works directly with I/O to receive and send very quickly
- Supports very large number of simultaneous TCP connections
- Supports concurrent synchronous processing operations if necessary (threaded)
- Implementation of TCP servers
- Implementation of TCP clients
- Implementation of UDP datagrams (sender and/or receiver)
- TCP client can event after a specified size of data or a text line received
- Each connections and receivings can waiting during a specified time
- The reasons of TCP client closures are returned
- Really robust, very fast and easy to use
- Compatible with MicroPython implementation (sockets layer, FiFo queue, perf counter)
XAsyncSockets classes :
| Class name | Description | | - | - | | XAsyncSocketsPool | Managed pool of 'XAsyncSocket' objects | | XClosedReason | Enumerator of 'XAsyncSocket' closing reasons | | XAsyncSocket | Abstract class of managed asynchronous sockets | | XAsyncTCPServer | TCP server implementation of 'XAsyncSocket' | | XAsyncTCPClient | TCP client implementation of 'XAsyncSocket' | | XAsyncUDPDatagram | UDP sender/recever implementation of 'XAsyncSocket' | | XBufferSlot | Managed buffer | | XBufferSlots | Managed buffers collection | | XFiFo | Dedicated FiFo queue |
XAsyncSockets exceptions :
| Class name | Description | | - | - | | XAsyncSocketsPoolException | Exception class for 'XAsyncSocketsPool' | | XAsyncSocketException | Exception class for 'XAsyncSocket' | | XAsyncTCPServerException | Exception class for 'XAsyncTCPServer' | | XAsyncTCPClientException | Exception class for 'XAsyncTCPClient' | | XAsyncUDPDatagramException | Exception class for 'XAsyncUDPDatagram' | | XFiFoException | Exception class for 'XFiFo' |
XAsyncSocketsPool class details :
| Method | Arguments |
| - | - |
| Constructor | None |
| GetAllAsyncSockets | None |
| GetAsyncSocketByID | id (int) |
| AsyncWaitEvents | threadsCount=0 (int) |
| StopWaitEvents | None |
| Property | Details |
| - | - |
| WaitEventsProcessing | Return True if "WaitEvents" is in processing |
( Do not call directly the methods AddAsyncSocket, RemoveAsyncSocket, NotifyNextReadyForReading and NotifyNextReadyForWriting )
XClosedReason class details :
| Static variable | Value | | - | - | | Error | 0x00 | | ClosedByHost | 0x01 | | ClosedByPeer | 0x02 | | Timeout | 0x03 |
XAsyncSocket class details :
| Method | Arguments | | - | - | | GetAsyncSocketsPool | None | | GetSocketObj | None | | Close | None |
| Property | Details | | - | - | | SocketID | Get the opened socket unique ID | | OnClosed | Get or set an event of type f(closedReason) | | State | Get or set a custom object |
XAsyncTCPServer class details :
| Method | Arguments |
| - | - |
| Create (static) | asyncSocketsPool, srvAddr (tuple of ip and port), srvBacklog=256 (int), bufSlots=None |
| Property | Details | | - | - | | SrvAddr | Tuple of ip and port | | OnClientAccepted | Get or set an event of type f(xAsyncTCPServer, xAsyncTCPClient) |
XAsyncTCPClient class details :
| Method | Arguments |
| - | - |
| Create (static) | asyncSocketsPool, srvAddr (tuple of ip and port), connectTimeout=5 (int), recvBufLen=4096 (int), sendBufLen=4096(int), connectAsync=True (bool) |
| AsyncRecvLine | lineEncoding='UTF-8', onLineRecv=None (function), onLineRecvArg=None (object), timeoutSec=None (int) |
| AsyncRecvData | size=None (int), onDataRecv=None (function), onDataRecvArg=None (object), timeoutSec=None (int) |
| AsyncSendData | data (bytes or buffer protocol), onDataSent=None (function), onDataSentArg=None (object) |
| AsyncSendSendingBuffer | size=None (int), onDataSent=None (function), onDataSentArg=None (object) |
| StartSSL | keyfile=None, certfile=None, server_side=False, cert_reqs=ssl.CERT_NONE, ca_certs=None |
| StartSSLContext | sslContext, serverSide=False |
onLineRecvis a callback event of type f(xAsyncTCPClient, line, arg)onDataRecvis a callback event of type f(xAsyncTCPClient, data, arg)onDataSentis a callback event of type f(xAsyncTCPClient, arg)StartSSLandStartSSLContextdoesn't works on MicroPython (in asynchronous non-blocking sockets mode)- It is widely recommended to use
StartSSLContextrather thanStartSSL(old version)
| Property | Details |
| - | - |
| SrvAddr | Tuple of ip and port |
| CliAddr | Tuple of ip and port |
| IsSSL | Return True if SSL is used |
| SendingBuffer | Get the existing buffer (memoryview) used to send data |
| OnFailsToConnect | Get or set an event of type f(xAsyncTCPClient) |
| OnConnected | Get or set an event of type f(xAsyncTCPClient) |
XAsyncUDPDatagram class details :
| Method | Arguments |
| - | - |
| Create (static) | asyncSocketsPool, localAddr=None (tuple of ip and port), recvBufLen=4096 (int), broadcast=False (bool) |
| AsyncSendDatagram | datagram (bytes or buffer protocol), remoteAddr (tuple of ip and port), onDataSent=None (function), onDataSentArg=None (object) |
- onDataSent is a callback event of type f(xAsyncUDPDatagram, arg)
| Property | Details | | - | - | | LocalAddr | Tuple of ip and port | | OnRecv | Get or set an event of type f(xAsyncUDPDatagram, remoteAddr, datagram) | | OnFailsToSend | Get or set an event of type f(xAsyncUDPDatagram, datagram, remoteAddr) |
XBufferSlot class details :
| Method | Arguments |
| - | - |
| Constructor | size (int), keepAlloc=True (bool) |
| Property | Details | | - | - | | Available | Get or set the availability of the slot | | Size | Get the buffer size of the slot | | Buffer | Get the buffer of the slot |
XBufferSlots class details :
| Method | Arguments |
| - | - |
| Constructor | slotsCount (int), slotsSize (int), keepAlloc=True (bool) |
| GetAvailableSlot | None |
| Property | Details | | - | - | | SlotsCount | Get the number of slots | | SlotsSize | Get the buffer size of each slots | | Slots | Get the list of slots |
XFiFo class details :
| Method | Arguments |
| - | - |
| Constructor | None |
| Put | obj (object) |
| Get | None |
| Clear | None |
| Property | Details |
| - | - |
| Empty | Return True if the FiFo is empty |
By JC`zic for HC² ;')
Keep it simple, stupid :+1:
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
109.9kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
350.1kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
