NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #746 most downloaded on PyPI
Socket.IO server and client for Python
Last release 20 days ago
14 Sep 2026
Release timing varies
gaps range from 8 days to 6 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
111 releases · first in 2015
Do not allow users to join another user's sid room #10002 ( commit )
Do not allow users to join another user's sid room #10002 ( commit )
Better handling of legacy connect handlers #10005 ( commit )
Client: improve connection error message #10001 ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
One column per quarter.
See CHANGES.md for release notes.
See CHANGES.md for release notes.
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Prevent unnecessary resource allocations #1574 ( commit )
Add zizmor to CI builds #1570 ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Use configured JSON module in managers #1549 ( commit )
Admin UI fixes: remove duplicate tasks, report transport upgrades ( commit )
Switch to Furo documentation template ( commit )
Add Python free-threading to CI #1554 ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Address deprecation warnings ( commit )
Drop Python 3.8 and 3.9 from CI builds ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Retry initial Redis connection #1534 ( commit #1 commit #2 )
Correctly regenerate RabbitMQ binding after a connection failure #1516 ( commit ) (thanks Gritty_dev !)
Support ext_type in the MsgPackPacket class #1521 ( commit )
Support sending bytesarray s when using pub/sub managers ( commit )
Fix typos in documentation #1520 ( commit ) (thanks Lê Nam Khánh !)
Improvements to the logging documentation ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Support Python's native ConnectionRefusedError exception to reject a connection #1515 ( commit )
Push binary data to the aiopika client manager #1514 ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Restore binary message support in message queue setups #1509 ( commit )
Fix formatting of client connection error #1507 ( commit )
Add 3.14 and pypy-3.11 CI tasks ( commit )
Improve documentation of the BaseManager.get_participants() method ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Restore support for rediss:// URLs, and add support for valkeys:// as well ( commit )
Add support for Redis connections using unix sockets #1503 ( commit ) (thanks Darren Chang !)
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Replace pickle with json in message queue communications #1502 ( commit )
Add support for Valkey in the Redis client managers #1488 ( commit ) (thanks phi-friday !)
Keep track of which namespaces failed to connect #1496 ( commit )
Fixed transport property of the simple clients to be a string as documented #1499 ( commit )
SimpleClient.call does not raise TimeoutError on timeout #1501 ( commit ) (thanks James Thistlewood !)
Wait for client to end background tasks on disconnect #1500 ( commit )
Better error logging for the Redis managers #1479 ( commit ) (thanks Eugnee !)
Channel was not properly initialized in several pubsub client managers #1476 ( commit ) (thanks Eugnee !)
Add message queue deployment recommendations for security ( commit )
Add missing async on session examples for the async server #1465 ( commit ) (thanks Func !)
Add SPDX license identifier #1453 ( commit ) (thanks Marc Mueller !)
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Eliminate race conditions on disconnect #1441 ( commit )
Preserve exception context in Client.connect and AsyncClient.connect #1450 ( commit ) (thanks Tim Van Baak !)
Allow custom client subclasses to be used in SimpleClient and AsyncSimpleClient #1432 ( commit )
Add support for Redis Sentinel URLs in RedisManager and AsyncRedisManager #1448 ( commit )
Remove incorrect reference to an asyncio installation extra in documentation #1449 ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Fix admin instrumentation support of disconnect reasons #1423 ( commit )
Stop using deprecated datetime functions ( commit )
Enable admin instrumentation by default in WSGI and ASGI examples ( commit )
Fixed broken gevent URL in documentation #1427 ( commit ) (thanks Carlos Guerrero !)
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Added a reason argument to the disconnect handler #1422 ( commit )
Prevented starting multiple tasks for reconnection #1369 ( commit ) (thanks humayunsr !)
Fixed AsyncClient::wait() unexpected return after success reconnect #1407 ( commit ) (thanks Arseny !)
Removed old constructs from old and unsupported Python versions ( commit )
Removed dependency on unittest.TestCase base class in unit tests ( commit )
Adopted pyenv-asyncio for async unit tests ( commit )
Adopted unittest.mock.AsyncMock in async unit tests ( commit )
Fix typo with AsyncClient.connect example #1403 ( commit ) (thanks Peter Bierma !)
Documentation typo #1421 ( commit ) (thanks Masen Furer !)
Renamed flask-socketio references to python-socketio in documentation #1377 ( commit )
Added Python 3.13 CI builds ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Prevent crash when client sends empty event ( commit )
Add missing to argument in manager's emit() method #1374 ( commit ) (thanks Pavieł Michalkievič !)
Reorganization of server documentation #1350 ( commit )
Update documentation note about Sanic issues #1365 ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
New shutdown() method added to the client #1333 ( commit )
Ignore catch-all namespace in client connections #1351 ( commit )
Accept 0 as a callback id #1329 ( commit ) (thanks Ruslan Bel'kov !)
Minor updates to the server and client documentation ( commit )
Remove outdated information in intro section of documentation #1337 ( commit )
Fixed typos in server documentation #1331 ( commit ) (thanks John Sigg !)
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Improved routing to catch-all namespace handlers #1316 ( commit ) (thanks asuka !)
Option to disable routing in ASGIApp ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Connection retry option in the client #1306 ( commit )
use Socket.IO sid in transport #1299 ( commit )
Add support for Python 3.12 and drop 3.7 #1297 ( commit ) (thanks Hugo van Kemenade !)
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Support catch-all namespaces #1288 ( commit ) (thanks mooomooo !)
Prevent pubsub managers from ever crashing #1262 ( commit )
Hold references to background tasks to avoid garbage collection #1191 ( commit )
Clearer documentation for the max_http_buffer_size argument #1272 ( commit )
Improved catch-all handler documentation ( commit )
Documentation typos ( commit )
Remove documentation references to gevent-websocket, which is not needed anymore ( commit )
Remove documentation reference to outdated aioredis package #1268 ( commit )
Update requirements for Django example ( commit )
Unit test fixes for the new simple clients #1265 ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
New SimpleClient and AsyncSimpleClient classes #1237 ( commit #1 ) ( commit #2 )
Reporting to Socket.IO Admin UI ( https://admin.socket.io ) #1164 ( commit )
Support entering and leaving rooms through pubsub client managers ( commit )
Async versions of enter_room and leave_room should be coroutines ( breaking change ) ( commit )
Add a shutdown() function for the server ( commit )
Message queue optimizations #1240 ( commit )
Remove unneeded arguments from super() ( commit )
Internal code restructure (no functional changes) ( commit #1 ) ( commit #2 )
Add FastAPI and Litestar server examples ( commit )
Update Socket.IO JavaScript client to version 4.7.2 in all examples ( commit )
Update ping_timeout documented default to accord with current Engine.IO behavior #1255 ( commit ) (thanks [object Object] !)
Refactor common testing helpers into a separate module ( commit )
Migrate Python package metadata to pyproject.toml ( commit )
See CHANGES.md for release notes.
See CHANGES.md for release notes.
Optimized performance and memory usage for broadcasts #1233 ( commit )
Improved documentation on horizontal scaling #1099 ( commit )
Corrected user session documentation example #1170 ( commit )
Improved grammar in documentation #1175 ( commit ) (thanks zykron1 !)
Fix docstring typo: client/server mixup #1163 ( commit ) (thanks Sasja !)
Fix typos in the documentation #1230 ( commit ) (thanks Alex Kuhrt !)
Upgrade dependencies in Django server example ( commit )
Update reference JavaScript examples ( commit )
Upgrade to pypy-3.9 in unit tests ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Made kombu client manager more robust and efficient ( commit )
Made aio_pika client manager more robust and efficient #1142 ( commit )
Correctly handle emits to multiple rooms in the async server #1081 ( commit )
Expose the ignore_queue option in namespaces #1103 ( commit )
Do not automatically import zmq ( commit )
TLS/SSL client documentation #1040 ( commit )
Removed incorrect reference to multiple callback invocations in documentation #1152 ( commit )
Fix documentation typo #1155 ( commit ) (thanks Onwuka Gideon !)
Fix documentation typos ( commit )
Fix documentation typo in asyncio_server.py #1150 ( commit ) (thanks riz-j !)
Fix documentationi type #1091 ( commit ) (thanks mostlycryptic !)
Add Python 3.11 to builds ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Fixed disconnect implementation when using a message queue #1002 ( commit )
Fixed remote async disconnects via message queue #1003 ( commit )
Support optional payloads in msgpack implementation #981 ( commit ) (thanks Cromfel !)
Recommend ASGI integration for Sanic in Documentation ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Add namespaces argument to Server and AsyncServer #822 ( commit )
Add missing await in asyncio server #952 ( commit ) (thanks sjrodahl !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Server refuses connections on unknown namespaces #822 ( commit )
Do not send ACK packet for unknown events #824 ( commit )
Fix Python 3.11 deprecation warning #941 ( commit ) (thanks Jérôme Boulmier !)
Correct handling of RedisError exception #919 ( commit )
Update Django example ( commit )
Documentation fix for async client ( commit )
Update documentation of asyncio server ( commit )
Fix documentation typo #948 ( commit ) (thanks mostlycryptic !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Catch and log errors in pubsub listening thread #889 ( commit )
Use new asyncio support in redis package #911 ( commit )
Add support for aiopiko version 7 and higher #897 ( commit ) (thanks Dmitriy !)
Fixed documentation typo #910 ( commit ) (thanks Omar Costa Hamido !)
Fix aiohttp example's background task #881 ( commit )
Bump sanic from 0.8 to 20.12.6 in /examples/server/sanic #875 ( commit ) (thanks dependabot[bot] !)
Add application name to Sanic example #892 ( commit ) (thanks Florian Metzger-Noel !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Connect with an empty auth object instead of None #861 ( commit )
Fix indentation in the "Rooms" docs example. #872 ( commit ) (thanks Ezio Melotti !)
Remove 3.6 and pypy-3.6 builds, add 3.10 and pypy-3.8 ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Support multiple Kafka servers ( commit ) (thanks sparkingdark !)
Include example code in flake8 pass ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Option to disable the SIGINT handler in the client #792 ( commit )
Do not invoke reserved events on a catch-all handler #814 ( commit )
Use correct binary packet types in the msgpack packet encoder #811 ( commit )
Add missing call() method to namespace classes #800 ( commit )
Add missing to argument to namespace emit() and send() methods #810 ( commit )
Configure Redis pubsub to skip subscription messages ( commit )
Migrate async Redis client manager to aioredis 2 #771 ( commit ) (thanks Sam Mosleh !)
Update Python supported versions in docs ( commit )
Document how to get the connection state in the client #799 ( commit )
Improved documentation of start_background_task() function ( commit )
Improved documentation of call() method #813 ( commit )
Fixed intermittent test failures #572 ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Catch-all event handlers ( commit )
Implement disconnect method for external processes #684 ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Support msgpack and custom packet serializers #749 ( commit )
Return error packet if client connects to an already connected namespace ( commit )
Handle CancelledError in async pubsub managers #750 ( commit )
More robust handling of emit's "to" argument #689 ( commit )
Remove executable permissions from setup.py, which has no shebang #748 ( commit ) (thanks Ben Beasley !)
Improved project structure ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Document WebSocket support for threading mode ( commit )
Allow functions to be used for URL, headers and auth data in client connection #588 ( commit )
Emit events to multiple rooms #605 ( commit )
More descriptive error when joining a room on a bad namespace #650 ( commit )
Document the use of arguments in the connect_error handler #554 ( commit )
Document that callbacks cannot be used in external processes #1533 ( commit )
Improve start_background_task() example in the documentation #647 ( commit )
Added Open Collective funding option ( commit )
Remove Python 2 from PyPI classifiers ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Pass custom authentication data with client connection #661 ( commit )
Configure the JSON decoder for safer parsing ( commit ) (thanks Onno Kortmann !)
Made parsing of id field of Socket.IO packet faster and more robust ( commit ) (thanks Onno Kortmann !)
Correct use of a trailing comma in Socket.IO packets with no id or data #671 ( commit )
Updated Socket.IO JavaScript client versions in documentation example ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Added wait argument to client's connect method #634 ( commit )
Invoke the disconnect handler when the client initiates a disconnection #594 ( commit )
Pass auth information sent by client to the connect handler ( commit )
Catch all possible Redis errors #635 ( commit )
Reset message queue sleep timer upon reconnect ( commit ) (thanks Ed Serzo !)
Fixed bad event object used by asyncio client reconnect logic #622 ( commit )
Adding missing example of async client implementation to documentation ( commit ) (thanks manuel !)
Add scrolling to documentation sidebar #610 ( commit ) (thanks Mohammed Abdul Raheem !)
Typo fix in documentation #602 ( commit ) (thanks Tim Gates !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Include error message and arguments in CONNECT_ERROR packet #590 ( commit )
Fix typos in the documentation #599 ( commit ) (thanks Arpit Jain !)
Updated connection options in the documentation #597 ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Correct handling of user session #585 ( commit )
Performace tuning ( commit )
Updated ASGI examples to latest release ( commit )
Updated Django example to latest release ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Fix Engine.IO dependency version ( commit )
Conversion from Socket.IO sid to Engine.IO sid ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Update to match the JavaScript Socket.IO 3.x releases (Socket.IO v5 protocol revision)
v5 protocol: do not connect the default namespace unless requested explicitly ( commit )
v5 protocol: handle per-namespace sids in base manager ( commit )
v5 protocol: rename ERROR packet to CONNECT_ERROR ( commit )
v5 protocol: use Engine.IO 4.x
Remove unnecessary binary argument ( commit )
Remove dependency on the six package ( commit )
Added version compatibility chart to README ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Added troubleshooting section to the documentation ( commit )
Document the use of tuples when emitting ( commit )
Handle the case of not having a previous signal handler #518 ( commit ) (thanks David Brooks !)
Simplify asserts in unit tests ( commit )
Fixed route path for tornado server #494 ( commit ) (thanks someApprentice !)
Use pytest as test runner ( commit )
Move builds to GitHub actions ( commit )
Fixed typo in documentation #524 ( commit ) (thanks Fover !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Improved handling of rejected connections #391 #487 #447 ( commit )
Fix multi-namespace disconnect logic #456 ( commit )
AsyncPubSubManager does not await for can_disconnect() #488 ( commit ) (thanks Andrei Neagu !)
Require a recipient in call() function in the server #476 ( commit ) (thanks tt2468 !)
ASGI startup and shutdown lifespan handlers #468 Co-authored-by: avi senavi@berkeley.edu ( commit ) (thanks databasedav !)
Remove references to Python 2.7 in the documentation ( commit )
Fix server example in docstring #449 ( commit ) (thanks wangjiancn !)
Fix documentation typo #450 ( commit ) (thanks kizError !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Add support for client disconnects in multi-server configurations #1174 ( commit )
Initialize the client's SIGINT signal handler only if a client is created #424 ( commit )
Fix for Server and AsyncServer when emitting no data #420 ( commit ) (thanks Aaron !)
More accurate logging documentation ( commit )
AsyncClient documentation fixes #389 ( commit ) (thanks Dmitry Volodin !)
Document concurrency problems with emits #403 ( commit )
Minor documentation fixes #386 ( commit ) (thanks Rotzbua !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Last version to support Python 2
Support the connect_error event in the client #344 ( commit )
Do not dispatch events for disconnected namespaces #333 ( commit )
Fix documentation typos #374 ( commit ) (thanks Dmitry Volodin !)
Updated documentation with new Engine.IO client options ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
New asyncio based RabbitMQ manager #320 ( commit ) (thanks salimaboubacar !)
New Apache Kafka manager ( commit )
Pass additional options to Redis and Kombu managers #307 ( commit )
Do not allow emits on a namespace that is not connected #325 ( commit )
Disconnect Engine.IO connection when server disconnects a client #1017 ( commit )
Update CORS documentation #327 ( commit )
Updated documentation on message queue manager classes ( commit )
Documentation fixes ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Address potential websocket cross-origin attacks #128 ( commit )
Documentation for the Same Origin security policy ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Handle keyboard interrupt during reconnect #301 ( commit )
Added "to" parameter as an alias to "room" ( commit )
Correctly autodetect asgi async mode ( commit )
Improved documentation on user session behavior on disconnections #308 ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
New @event decorator for handler registration ( commit )
Much more flexible support for static files in the server ( commit )
Move python-engineio dependency to versions 3.8 and up ( commit )
Various simplifications to examples ( commit )
Expose the sid for the connection as sio.sid ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
skip_sid parameter can also be a list #202 ( commit )
Fixed Sanic documentation #193 ( commit )
Added note on CORS support for sanic #205 ( commit )
flake8 fixes ( commit )
added python 3.7 build ( commit )
added change log ( commit )
auto-generate change log during release ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
properly handle disconnects from ios client ( commit )
updated asgi examples to the latest uvicorn ( commit )
helper release script ( commit )
fixed requirements file ( commit )
updated some requirements ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
remove unused wait and timeout arguments from send method ( commit )
Add missing import statement for socketio in docs #289 ( commit ) (thanks Syed Faheel Ahmad !)
change a typo from client to server #280 ( commit ) (thanks Almog Cohen !)
add link to stack overflow for questions ( commit )
Merge branch 'Keylekan-master' ( commit )
Add namespaces parameter to the self.connect call in the reconnection process ( commit ) (thanks quentin !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
change async_handlers default to true, and add call() method ( commit )
Add ConnectionRefusedError and handling for it ( commit ) (thanks Andrey Rusanov !)
fix python 2 unit test ( commit )
client disconnect does not take namespace as argument #259 ( commit )
Avoid double calls to client disconnect handlers #261 ( commit )
readme fixes ( commit )
Update sanic version in requirements.txt #255 ( commit ) (thanks maxDzh !)
simplify client dependencies ( commit )
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
Type in documentation #241 ( commit ) (thanks Emeka Icha !)
fix typo with quotes in doc #238 ( commit ) (thanks Julien Deniau !)
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
See CHANGE.LOG for release notes.
SocketIO client
reorganization of examples, plus some new ones for the client ( commit )
minor example code fix ( commit )
resolve wrong variable and css element #177 ( commit ) (thanks iepngs !)
Your coding agent can read these notes before it upgrades. Set up the MCP server →