PYTHON-SOCKETIO(1) python-socketio PYTHON-SOCKETIO(1) (NAME) python-socketio - python-socketio Socket.IO Python . (GETTING STARTED) Socket.IO Socket.IO ( ) . JavaScript . Python asyncio . Socket.IO (backward incompatible) . Python . . JavaScript Socket.IO Engine.IO . +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+ | JavaScript Socket.IO | | | | | | | | | python-socketio | python-engineio | | | Socket.IO | Engine.IO | | | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+ |0.9.x | 1, 2 | 1, 2 | | | | | | | | | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+ |1.x 2.x | 3, 4 | 3 | 4.x | 3.x | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+ |3.x 4.x | 5 | 4 | 5.x | 4.x | |" (Client Examples)" | | | | | | Python : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |sio = socketio.Client() | | | | | | | | | | | |@sio.event | | | | | |def connect(): | | | | | | print('connection established') | | | | | | | | | | | |@sio.event | | | | | |def my_message(data): | | | | | | print('message received with ', data) | | | | | | sio.emit('my response', {'response': 'my response'}) | | | | | | | | | | | |@sio.event | | | | | |def disconnect(): | | | | | | print('disconnected from server') | | | | | | | | | | | |sio.connect('http://localhost:5000') | | | | | |sio.wait() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio ( Python 3.5 ): | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import asyncio | | | | | |import socketio | | | | | | | | | | | |sio = socketio.AsyncClient() | | | | | | | | | | | |@sio.event | | | | | |async def connect(): | | | | | | print('connection established') | | | | | | | | | | | |@sio.event | | | | | |async def my_message(data): | | | | | | print('message received with ', data) | | | | | | await sio.emit('my response', {'response': 'my response'}) | | | | | | | | | | | |@sio.event | | | | | |async def disconnect(): | | | | | | print('disconnected from server') | | | | | | | | | | | |async def main(): | | | | | | await sio.connect('http://localhost:5000') | | | | | | await sio.wait() | | | | | | | | | | | |if __name__ == '__main__': | | | | | | asyncio.run(main()) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |" (Client Features)" | | | | | |0.0 | | | | | |o 2 | | | | | | Socket.IO JavaScript Socket.IO | | | | | | . | | | | | |o 2 | | | | | | Python 3.8 . | | | | | |o 2 | | | | | | Python | | | | | |asyncio. | | | | | |o 2 | | | | | | | | | | | | . | | | | | |o 2 | | | | | | HTTP long-polling WebSocket . | | | | | |o 2 | | | | | | . | | | | | |" (Server Examples)" | | | | | | | | | | | |Eventlet : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import eventlet | | | | | |import socketio | | | | | | | | | | | |sio = socketio.Server() | | | | | |app = socketio.WSGIApp(sio, static_files={ | | | | | | '/': {'content_type': 'text/html', 'filename': 'index.html'} | | | | | |}) | | | | | | | | | | | |@sio.event | | | | | |def connect(sid, environ): | | | | | | print('connect ', sid) | | | | | | | | | | | |@sio.event | | | | | |def my_message(sid, data): | | | | | | print('message ', data) | | | | | | | | | | | |@sio.event | | | | | |def disconnect(sid): | | | | | | print('disconnect ', sid) | | | | | | | | | | | |if __name__ == '__main__': | | | | | | eventlet.wsgi.server(eventlet.listen(('', 5000)), app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio ( Python 3.5+) | | | | | |Uvicorn : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |from aiohttp import web | | | | | |import socketio | | | | | | | | | | | |sio = socketio.AsyncServer() | | | | | |app = web.Application() | | | | | |sio.attach(app) | | | | | | | | | | | |async def index(request): | | | | | | """Serve the client-side application.""" | | | | | | with open('index.html') as f: | | | | | | return web.Response(text=f.read(), content_type='text/html') | | | | | | | | | | | |@sio.event | | | | | |def connect(sid, environ): | | | | | | print("connect ", sid) | | | | | | | | | | | |@sio.event | | | | | |async def chat_message(sid, data): | | | | | | print("message ", data) | | | | | | | | | | | |@sio.event | | | | | |def disconnect(sid): | | | | | | print('disconnect ', sid) | | | | | | | | | | | |app.router.add_static('/static', 'static') | | | | | |app.router.add_get('/', index) | | | | | | | | | | | |if __name__ == '__main__': | | | | | | web.run_app(app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |" (Server Features)" | | | | | |0.0 | | | | | |o 2 | | | | | | Socket.IO JavaScript . | | | | | |o 2 | | | | | | Python 3.8+. | | | | | |o 2 | | | | | | Python | | | | | |asyncio. | | | | | |o 2 | | | | | | . | | | | | |o 2 | | | | | | WSGI | | | | | |ASGI | | | | | |Gunicorn Uvicorn | | | | | |eventlet gevent . | | | | | |o 2 | | | | | | WSGI Flask Django | | | | | | . | | | | | |o 2 | | | | | | asyncio aiohttp | | | | | |FastAPI sanic | | | | | | tornado . | | | | | |o 2 | | | | | | "" (rooms) . | | | | | |o 2 | | | | | | (messaging queue) Redis RabbitMQ. | | | | | |o 2 | | | | | | worker Celery . | | | | | |o 2 | | | | | | (Event-based) . | | | | | |o 2 | | | | | | (transports) HTTP long-polling WebSocket. | | | | | |o 2 | | | | | | XHR2 XHR. | | | | | |o 2 | | | | | | (binary). | | | | | |o 2 | | | | | | HTTP gzip deflate. | | | | | |o 2 | | | | | | CORS cross-origin . | | | | | |" SOCKET.IO (THE SOCKET.IO CLIENTS)" | | | | | | Socket.IO : | | | | | |0.0 | | | | | |o 2 | | | | | | "" API | | | | | |o 2 | | | | | | "-" Socket.IO | | | | | | | | | | | |0u | | | | | | : Python asyncio. | | | | | | | | | | | | Python : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |pip install "python-socketio[client]" | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |pip install "python-socketio[asyncio_client]" | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | Socket.IO . . | | | | | | | | | | | | Socket.IO context manager : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |# standard Python | | | | | |with socketio.SimpleClient() as sio: | | | | | | # ... connect to a server and use the client | | | | | | # ... no need to manually disconnect! | | | | | | | | | | | |# asyncio | | | | | |async with socketio.AsyncSimpleClient() as sio: | | | | | | # ... connect to a server and use the client | | | | | | # ... no need to manually disconnect! | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | context manager with async with . | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |# standard Python | | | | | |sio = socketio.SimpleClient() | | | | | | | | | | | |# asyncio | | | | | |sio = socketio.AsyncSimpleClient() | | | | | | | | | | | | | | | | | |0u | | | | | | connect() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.connect('http://localhost:5000') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.connect('http://localhost:5000') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | long-polling WebSocket . WebSocket transports : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.connect('http://localhost:5000', transports=['websocket']) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . sid : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |print('my sid is', sio.sid) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Socket.IO transport : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |print('my transport is', sio.transport) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | 'websocket' 'polling' . | | | | | | TLS/SSL (TLS/SSL Support) | | | | | | TLS/SSL . (URL) https:// : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . ..SS " (Emitting Events)" | | | | | | emit() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.emit('my message', {'foo': 'bar'}) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.emit('my message', {'foo': 'bar'}) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | . str | | | | | |bytes dict list tuple . list | | | | | |tuple tuple . | | | | | | | | | | | | . | | | | | |" (Receiving Events)" | | | | | | receive() | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |event = sio.receive() | | | | | |print(f'received event: "{event[0]}" with arguments {event[1:]}') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio await : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |event = await sio.receive() | | | | | |print(f'received event: "{event[0]}" with arguments {event[1:]}') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | receive() . | | | | | | . | | | | | | receive() | | | | | | . (timeout) | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |from socketio.exceptions import TimeoutError | | | | | | | | | | | |try: | | | | | | event = sio.receive(timeout=5) | | | | | |except TimeoutError: | | | | | | print('timed out waiting for event') | | | | | |else: | | | | | | print('received event:', event) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |from socketio.exceptions import TimeoutError | | | | | | | | | | | |try: | | | | | | event = await sio.receive(timeout=5) | | | | | |except TimeoutError: | | | | | | print('timed out waiting for event') | | | | | |else: | | | | | | print('received event:', event) | | | | | | | | | | | | | | | | | |0u | | | | | | disconnect() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.disconnect() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.disconnect() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |" (Debugging and Troubleshooting)" | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |# standard Python | | | | | |sio = socketio.Client(logger=True, engineio_logger=True) | | | | | | | | | | | |# asyncio | | | | | |sio = socketio.AsyncClient(logger=True, engineio_logger=True) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | logger Socket.IO engineio_logger Engine.IO . : | | | | | |0.0 | | | | | |o 2 | | | | | |True: stderr INFO . | | | | | |o 2 | | | | | |False: stderr ERROR . . | | | | | |o 2 | | | | | | logging.Logger: . | | | | | | | | | | | |0u | | | | | | . | | | | | |" (Using the Event-Driven Client)" | | | | | |" (Creating a Client Instance)" | | | | | | Socket.IO : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |# standard Python | | | | | |sio = socketio.Client() | | | | | | | | | | | |# asyncio | | | | | |sio = socketio.AsyncClient() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |" (Defining Event Handlers)" | | | | | | Socket.IO . (emit) . . socketio.Client.event() <#socketio.Client.event> socketio.Client.on() <#socketio.Client.on> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def message(data): | | | | | | print('I received a message!') | | | | | | | | | | | |@sio.on('my message') | | | | | |def on_message(data): | | | | | | print('I received a message!') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . . | | | | | | asyncio (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |async def message(data): | | | | | | print('I received a message!') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | ..SS (Catch-All Event and Namespace Handlers) | | | | | | <<>> (catch-all) | | | | | | . '*' | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('*') | | | | | |def any_event(event, sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Asyncio (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('*') | | | | | |async def any_event(event, sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . | | | | | | . | | | | | | connect disconnect | | | | | | . | | | | | | <<>> | | | | | | . | | | | | | '*' : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('my_event', namespace='*') | | | | | |def my_event_any_namespace(namespace, sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | . | | | | | | <<>> | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('*', namespace='*') | | | | | |def any_event_any_namespace(event, namespace, sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | . | | | | | | (Connect, Connect Error and Disconnect Event Handlers) | | | | | | connect connect_error disconnect | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def connect(): | | | | | | print("I'm connected!") | | | | | | | | | | | |@sio.event | | | | | |def connect_error(data): | | | | | | print("The connection failed!") | | | | | | | | | | | |@sio.event | | | | | |def disconnect(reason): | | | | | | print("I'm disconnected! reason:", reason) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | connect_error | | | | | |. . | | | | | | | | | | | | . | | | | | | disconnect | | | | | | . | | | | | | | | | | | | . | | | | | |connect . reason | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def disconnect(reason): | | | | | | if reason == sio.reason.CLIENT_DISCONNECT: | | | | | | print('the client disconnected') | | | | | | elif reason == sio.reason.SERVER_DISCONNECT: | | | | | | print('the server disconnected the client') | | | | | | else: | | | | | | print('disconnect reason:', reason) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | socketio.Client.reason <#socketio.Client.reason> | | | | | | . | | | | | | connect connect_error disconnect | | | | | | ..SS | | | | | | connect() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.connect('http://localhost:5000') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.connect('http://localhost:5000') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . | | | | | | sid : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |print('my sid is', sio.sid) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Socket.IO | | | | | |transport : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |print('my transport is', sio.transport) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | 'websocket' | | | | | |'polling' . | | | | | | TLS/SSL | | | | | | TLS/SSL . URL | | | | | | https:// : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . | | | | | | | | | | | | HTTP TLS/SSL | | | | | | . | | | | | | | | | | | | (self-signed) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |http_session = requests.Session() | | | | | |http_session.verify = False | | | | | |sio = socketio.Client(http_session=http_session) | | | | | |sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |connector = aiohttp.TCPConnector(ssl=False) | | | | | |http_session = aiohttp.ClientSession(connector=connector) | | | | | |sio = socketio.AsyncClient(http_session=http_session) | | | | | |await sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |(CA bundle) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |http_session = requests.Session() | | | | | |http_session.verify = '/path/to/ca.pem' | | | | | |sio = socketio.Client(http_session=http_session) | | | | | |sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |ssl_context = ssl.create_default_context() | | | | | |ssl_context.load_verify_locations('/path/to/ca.pem') | | | | | |connector = aiohttp.TCPConnector(ssl=ssl_context) | | | | | |http_session = aiohttp.ClientSession(connector=connector) | | | | | |sio = socketio.AsyncClient(http_session=http_session) | | | | | |await sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |http_session = requests.Session() | | | | | |http_session.cert = ('/path/to/client/cert.pem', '/path/to/client/key.pem') | | | | | |sio = socketio.Client(http_session=http_session) | | | | | |sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) | | | | | |ssl_context.load_cert_chain('/path/to/client/cert.pem', | | | | | | '/path/to/client/key.pem') | | | | | |connector = aiohttp.TCPConnector(ssl=ssl_context) | | | | | |http_session = aiohttp.ClientSession(connector=connector) | | | | | |sio = socketio.AsyncClient(http_session=http_session) | | | | | |await sio.connect('https://example.com') | | | | | | | | | | | | | | | | | |0u | | | | | | emit() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.emit('my message', {'foo': 'bar'}) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.emit('my message', {'foo': 'bar'}) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . str bytes dict list tuple . list tuple tuple . . | | | | | | emit() . | | | | | |" (Event Callbacks)" | | | | | | (callback) . . : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def my_event(sid, data): | | | | | | # handle the message | | | | | | return "OK", 123 | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . socketio.Server.emit() <#socketio.Server.emit> callback (callable) . . | | | | | |" (Namespaces)" | | | | | | Socket.IO (multiplex) . namespace . . connect() . : /chat: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.connect('http://localhost:5000', namespaces=['/chat']) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | namespace : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event(namespace='/chat') | | | | | |def my_custom_event(sid, data): | | | | | | pass | | | | | | | | | | | |@sio.on('connect', namespace='/chat') | | | | | |def on_connect(): | | | | | | print("I'm connected to the /chat namespace!") | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | emit() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.emit('my message', {'foo': 'bar'}, namespace='/chat') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | namespaces connect() ..SS | | | | | | | | | | | | | | | | | |socketio.ClientNamespace <#socketio.ClientNamespace> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |class MyCustomNamespace(socketio.ClientNamespace): | | | | | | def on_connect(self): | | | | | | pass | | | | | | | | | | | | def on_disconnect(self, reason): | | | | | | pass | | | | | | | | | | | | def on_my_event(self, data): | | | | | | self.emit('my_response', data) | | | | | | | | | | | |sio.register_namespace(MyCustomNamespace('/chat')) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio | | | | | |socketio.AsyncClientNamespace <#socketio.AsyncClientNamespace> | | | | | | (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |class MyCustomNamespace(socketio.AsyncClientNamespace): | | | | | | def on_connect(self): | | | | | | pass | | | | | | | | | | | | def on_disconnect(self, reason): | | | | | | pass | | | | | | | | | | | | async def on_my_event(self, data): | | | | | | await self.emit('my_response', data) | | | | | | | | | | | |sio.register_namespace(MyCustomNamespace('/chat')) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (catch-all) '*' | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.register_namespace(MyCustomNamespace('*')) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | on_ (dispatch). | | | | | | my_event on_my_event . | | | | | | | | | | | | . | | | | | | . | | | | | | | | | | | | | | | | | |socketio.Client <#socketio.Client> socketio.AsyncClient <#socketio.AsyncClient> | | | | | | namespace . | | | | | | | | | | | | . | | | | | | | | | | | | disconnect() | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.disconnect() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.disconnect() | | | | | | | | | | | | | | | | | |0u | | | | | | . (main thread) Socket.IO . | | | | | | wait() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.wait() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.wait() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |def my_background_task(my_argument): | | | | | | # do some background work here! | | | | | | pass | | | | | | | | | | | |task = sio.start_background_task(my_background_task, 123) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (positional) (keyword) . | | | | | | asyncio : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |async def my_background_task(my_argument): | | | | | | # do some background work here! | | | | | | pass | | | | | | | | | | | |task = sio.start_background_task(my_background_task, 123) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (coroutine) . . | | | | | | sleep() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.sleep(2) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio: | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |await sio.sleep(2) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (sleep) ..SS (Debugging and Troubleshooting) | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |# standard Python | | | | | |sio = socketio.Client(logger=True, engineio_logger=True) | | | | | | | | | | | |# asyncio | | | | | |sio = socketio.AsyncClient(logger=True, engineio_logger=True) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | logger Socket.IO engineio_logger Engine.IO . True stderr logging . False . | | | | | | . | | | | | |" SOCKET.IO (THE SOCKET.IO SERVER)" | | | | | | Socket.IO : | | | | | |0.0 | | | | | |o 2 | | | | | | socketio.Server() <#socketio.Server> . | | | | | |o 2 | | | | | | socketio.AsyncServer() <#socketio.AsyncServer> asyncio . | | | | | | | | | | | |0u | | | | | | asyncio (coroutine) . | | | | | | (Installation) | | | | | | Socket.IO : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |pip install python-socketio | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (Creating a Server Instance) | | | | | | Socket.IO socketio.Server <#socketio.Server> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |# create a Socket.IO server | | | | | |sio = socketio.Server() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio socketio.AsyncServer <#socketio.AsyncServer> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |# create a Socket.IO server | | | | | |sio = socketio.AsyncServer() | | | | | | | | | | | | | | | | | |0u | | | | | | Socket.IO | | | | | | | | | | | | Socket.IO . | | | | | | WSGI | | | | | | ASGI . | | | | | | WSGI | | | | | | Socket.IO WSGI | | | | | | socketio.WSGIApp <#socketio.WSGIApp> (wrap) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |# wrap with a WSGI application | | | | | |app = socketio.WSGIApp(sio) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | WSGI WSGI | | | | | |Werkzeug | | | | | |Gunicorn (production) . | | | | | | Socket.IO WSGI | | | | | | Flask Django WSGIApp | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |from mywebapp import app # a Flask, Django, etc. application | | | | | |app = socketio.WSGIApp(sio, app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | ASGI | | | | | | Socket.IO ASGI | | | | | | socketio.ASGIApp <#socketio.ASGIApp> (wrap) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |# wrap with ASGI application | | | | | |app = socketio.ASGIApp(sio) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | ASGI ASGI | | | | | |Uvicorn . | | | | | | Socket.IO | | | | | |ASGI FastAPI . ASGIApp | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |from mywebapp import app # a FastAPI or other ASGI application | | | | | |app = socketio.ASGIApp(sio, app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | Socket.IO (static files) | | | | | | . | | | | | | HTML CSS JavaScript . | | | | | | / | | | | | | . | | | | | |(URL) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |static_files = { | | | | | | '/': 'latency.html', | | | | | | '/static/socket.io.js': 'static/socket.io.js', | | | | | | '/static/style.css': 'static/style.css', | | | | | |} | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | / ( ) | | | | | | latency.html | | | | | | (content type) | | | | | |text/html . | | | | | | .html .css .js .json | | | | | |.jpg .png .gif .txt | | | | | | . | | | | | | application/octet-stream . | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |static_files = { | | | | | | '/': {'filename': 'latency.html', 'content_type': 'text/plain'}, | | | | | |} | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |static_files = { | | | | | | '/static': './public', | | | | | |} | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | /static | | | | | |public | | | | | |/static/index.html ./public/index.html | | | | | |/static/css/styles.css ./public/css/styles.css | | | | | |. | | | | | | / index.html | | | | | | . /static/ | | | | | | ./public/index.html . | | | | | | | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |static_files = { | | | | | | '/static': './public', | | | | | | '': 'image.gif', | | | | | |} | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | /static/ ./public/image.gif | | | | | | . : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |static_files = { | | | | | | '/static': './public', | | | | | | '': {'filename': 'image.gif', 'content_type': 'text/plain'}, | | | | | |} | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | static_files | | | | | | socketio.WSGIApp socketio.ASGIApp : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |# for standard WSGI applications | | | | | |sio = socketio.Server() | | | | | |app = socketio.WSGIApp(sio, static_files=static_files) | | | | | | | | | | | |# for asyncio-based ASGI applications | | | | | |sio = socketio.AsyncServer() | | | | | |app = socketio.ASGIApp(sio, static_files=static_files) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |0.0.IP | | | | | | endpoint Socket.IO . | | | | | |o 2 | | | | | | (static file) . | | | | | |o 2 | | | | | | endpoint Socket.IO 404 . | | | | | | | | | | | |0u | | | | | |: (caching) . (production) . | | | | | |" (Events)" | | | | | | Socket.IO . (emit) . . | | | | | |" (Listening to Events)" | | | | | | (event handler) . . | | | | | |socketio.Server.event() <#socketio.Server.event> socketio.Server.on() <#socketio.Server.on> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def my_event(sid, data): | | | | | | pass | | | | | | | | | | | |@sio.on('my custom event') | | | | | |def another_event(sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . . | | | | | | asyncio (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |async def my_event(sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | sid (session id) Socket.IO Socket.IO . sid . | | | | | |" (Connect and Disconnect Events)" | | | | | | connect disconnect : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def connect(sid, environ, auth): | | | | | | print('connect ', sid) | | | | | | | | | | | |@sio.event | | | | | |def disconnect(sid, reason): | | | | | | print('disconnect ', sid, reason) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | connect sid . | | | | | | sid environ WSGI HTTP . auth None . | | | | | | connect False . False | | | | | |socketio.exceptions.ConnectionRefusedError <#socketio.exceptions.ConnectionRefusedError> (raise) | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |from socketio.exceptions import ConnectionRefusedError | | | | | | | | | | | |@sio.event | | | | | |def connect(sid, environ, auth): | | | | | | raise ConnectionRefusedError('authentication failed') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | sid reason : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def disconnect(sid, reason): | | | | | | if reason == sio.reason.CLIENT_DISCONNECT: | | | | | | print('the client disconnected') | | | | | | elif reason == sio.reason.SERVER_DISCONNECT: | | | | | | print('the server disconnected the client') | | | | | | else: | | | | | | print('disconnect reason:', reason) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | socketio.Server.reason <#socketio.Server.reason> ..SS (Catch-All Event Handlers) | | | | | | <<>> (catch-all) . '*' : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('*') | | | | | |def any_event(event, sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Asyncio (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('*') | | | | | |async def any_event(event, sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . . | | | | | | connect disconnect . | | | | | | (Emitting Events to Clients) | | | | | | Socket.IO . socketio.Server.emit() <#socketio.Server.emit> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.emit('my event', {'data': 'foobar'}) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | str bytes list dict tuple . list dict tuple . tuple . | | | | | | . . to sid emit : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.emit('my event', {'data': 'foobar'}, to=user_sid) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | to sid . to (broadcast) . | | | | | | (Acknowledging Events) | | | | | | (acknowledgment) . Socket.IO : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def my_event(sid, data): | | | | | | # handle the message | | | | | | return "OK", 123 # <-- client will have these as acknowledgement | | | | | | | | | | | | | | | | | |0u | | | | | | (acknowledgement) | | | | | | (emit) | | | | | | . | | | | | | Socket.IO . | | | | | | socketio.Server.emit() <#socketio.Server.emit> | | | | | |socketio.Server.call() <#socketio.Server.call> . call() | | | | | | | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |response = sio.call('my event', {'data': 'foobar'}, to=user_sid) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (callback) . | | | | | |socketio.Server.emit() <#socketio.Server.emit> callback | | | | | | (callable) . | | | | | | | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |def my_callback(): | | | | | | print("callback invoked!") | | | | | | | | | | | |sio.emit('my event', {'data': 'foobar'}, to=user_sid, callback=my_callback) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |" (Rooms)" | | | | | | | | | | | | "" (rooms) | | | | | | . | | | | | | to socketio.SocketIO.emit() | | | | | | . | | | | | | to | | | | | | . | | | | | | | | | | | |socketio.Server.enter_room() <#socketio.Server.enter_room> | | | | | |socketio.Server.leave_room() <#socketio.Server.leave_room> | | | | | | . | | | | | | . | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def begin_chat(sid): | | | | | | sio.enter_room(sid, 'chat_users') | | | | | | | | | | | |@sio.event | | | | | |def exit_chat(sid): | | | | | | sio.leave_room(sid, 'chat_users') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (chat) | | | | | | ( ) (broadcast) . | | | | | |socketio.Server.emit() <#socketio.Server.emit> skip_sid | | | | | | . | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def my_message(sid, data): | | | | | | sio.emit('my reply', data, room='chat_users', skip_sid=sid) | | | | | | | | | | | | | | | | | |0u | | | | | | Socket.IO (multiplex) . namespace . . http://example.com:8000/chat /chat . | | | | | | (sid) . . | | | | | | (Decorator-Based Namespaces) | | | | | | namespace : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event(namespace='/chat') | | | | | |def my_custom_event(sid, data): | | | | | | pass | | | | | | | | | | | |@sio.on('my custom event', namespace='/chat') | | | | | |def my_custom_event(sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (emit) namespace . namespace Socket.IO / . | | | | | | namespace . . socketio.Server <#socketio.Server> namespace . | | | | | | (Class-Based Namespaces) | | | | | | socketio.Namespace <#socketio.Namespace> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |class MyCustomNamespace(socketio.Namespace): | | | | | | def on_connect(self, sid, environ): | | | | | | pass | | | | | | | | | | | | def on_disconnect(self, sid, reason): | | | | | | pass | | | | | | | | | | | | def on_my_event(self, sid, data): | | | | | | self.emit('my_response', data) | | | | | | | | | | | |sio.register_namespace(MyCustomNamespace('/test')) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio socketio.AsyncNamespace <#socketio.AsyncNamespace> (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |class MyCustomNamespace(socketio.AsyncNamespace): | | | | | | def on_connect(self, sid, environ): | | | | | | pass | | | | | | | | | | | | def on_disconnect(self, sid, reason): | | | | | | pass | | | | | | | | | | | | async def on_my_event(self, sid, data): | | | | | | await self.emit('my_response', data) | | | | | | | | | | | |sio.register_namespace(MyCustomNamespace('/test')) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | on_ . my_event on_my_event . . . | | | | | | socketio.Server <#socketio.Server> socketio.AsyncServer <#socketio.AsyncServer> namespace . | | | | | | . | | | | | | (singleton) . ..SS (Catch-All Namespaces) | | | | | | (catch-all) <<>> ("catch-all") . '*' : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('my_event', namespace='*') | | | | | |def my_event_any_namespace(namespace, sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . | | | | | | (catch-all) '*' (registration) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio.register_namespace(MyCustomNamespace('*')) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | <<>> ("catch-all") : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('*', namespace='*') | | | | | |def any_event_any_namespace(event, namespace, sid, data): | | | | | | pass | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . | | | | | | (User Sessions) | | | | | | (user session) . ( ) . | | | | | | save_session() get_session() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def connect(sid, environ): | | | | | | username = authenticate_user(environ) | | | | | | sio.save_session(sid, {'username': username}) | | | | | | | | | | | |@sio.event | | | | | |def message(sid, data): | | | | | | session = sio.get_session(sid) | | | | | | print('message from ', session['username']) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio (coroutine) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |async def connect(sid, environ): | | | | | | username = authenticate_user(environ) | | | | | | await sio.save_session(sid, {'username': username}) | | | | | | | | | | | |@sio.event | | | | | |async def message(sid, data): | | | | | | session = await sio.get_session(sid) | | | | | | print('message from ', session['username']) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (context manager) session() : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def connect(sid, environ): | | | | | | username = authenticate_user(environ) | | | | | | with sio.session(sid) as session: | | | | | | session['username'] = username | | | | | | | | | | | |@sio.event | | | | | |def message(sid, data): | | | | | | with sio.session(sid) as session: | | | | | | print('message from ', session['username']) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio (asynchronous context manager) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |async def connect(sid, environ): | | | | | | username = authenticate_user(environ) | | | | | | async with sio.session(sid) as session: | | | | | | session['username'] = username | | | | | | | | | | | |@sio.event | | | | | |async def message(sid, data): | | | | | | async with sio.session(sid) as session: | | | | | | print('message from ', session['username']) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | get_session() save_session() session() namespace . . | | | | | |: . ..SS (Cross-Origin Controls) | | | | | | (same-origin policy) . : | | | | | |0.0 | | | | | |o 2 | | | | | | HTTP WebSocket Origin (scheme) (host) URL . 400 . | | | | | |o 2 | | | | | | Origin . | | | | | | | | | | | |0u | | | | | | cors_allowed_origins . . '*' (CSRF) . | | | | | | (Monitoring and Administration) | | | | | | Socket.IO Socket.IO Admin UI . . . . | | | | | | . | | | | | |instrument() <#socketio.Server.instrument> . : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import os | | | | | |import socketio | | | | | | | | | | | |sio = socketio.Server(cors_allowed_origins=[ | | | | | | 'http://localhost:5000', | | | | | | 'https://admin.socket.io', | | | | | |]) | | | | | |sio.instrument(auth={ | | | | | | 'username': 'admin', | | | | | | 'password': os.environ['ADMIN_PASSWORD'], | | | | | |}) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Admin UI . admin ADMIN_PASSWORD . Admin UI CORS . | | | | | | . | | | | | | (Debugging and Troubleshooting) | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | | | | | | | |# standard Python | | | | | |sio = socketio.Server(logger=True, engineio_logger=True) | | | | | | | | | | | |# asyncio | | | | | |sio = socketio.AsyncServer(logger=True, engineio_logger=True) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | logger Socket.IO engineio_logger Engine.IO . : | | | | | |0.0 | | | | | |o 2 | | | | | |True: stderr INFO . | | | | | |o 2 | | | | | |False: stderr ERROR . . | | | | | |o 2 | | | | | | logging.Logger: . | | | | | | | | | | | |0u | | | | | | 400 ..SS " (Concurrency and Web Server Integration)" | | | | | | Socket.IO | | | | | | . async_mode | | | | | | . : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.Server(async_mode='threading') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (synchronous) | | | | | | (asynchronous) . | | | | | |" (Standard Modes)" | | | | | |0.0 | | | | | |o 2 | | | | | |threading: (threads) | | | | | | WSGI . | | | | | | . | | | | | |o 2 | | | | | |gevent: (greenlets) | | | | | |gevent . | | | | | | gevent . | | | | | |o 2 | | | | | |gevent_uwsgi: gevent | | | | | |uWSGI . | | | | | |o 2 | | | | | |eventlet: | | | | | |eventlet . | | | | | | eventlet . eventlet | | | | | | . | | | | | | | | | | | |0u | | | | | |" (Asyncio Modes)" | | | | | | | | | | | |asyncio | | | | | | | | | | | | . | | | | | |0.0 | | | | | |o 2 | | | | | |asgi: | | | | | |ASGI . | | | | | |o 2 | | | | | |aiohttp: aiohttp | | | | | | . | | | | | |o 2 | | | | | |tornado: Tornado | | | | | | . | | | | | |o 2 | | | | | |sanic: Sanic | | | | | | . Sanic asgi | | | | | | . | | | | | | | | | | | |0u | | | | | |" (Deployment Strategies)" | | | | | | Socket.IO . | | | | | |Gunicorn | | | | | | Socket.IO | | | | | |Gunicorn . Socket.IO | | | | | | socketio.WSGIApp <#socketio.WSGIApp> | | | | | | WSGI : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.Server(async_mode='threading') | | | | | |app = socketio.WSGIApp(sio) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | socketio.WSGIApp | | | | | |Socket.IO WSGI | | | | | | WSGI ( Flask Django) | | | | | | Socket.IO : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.Server(async_mode='threading') | | | | | |app = socketio.WSGIApp(sio, other_wsgi_app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Socket.IO | | | | | | Gunicorn : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |$ gunicorn --workers 1 --threads 100 --bind 127.0.0.1:5000 module:app | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . | | | | | | (worker) | | | | | | : | | | | | |0.0 | | | | | |o 2 | | | | | | WebSocket . | | | | | |long-polling (load balancing) Gunicorn | | | | | | . long-polling | | | | | |transports=['websocket'] . | | | | | | WebSocket . | | | | | |o 2 | | | | | | socketio.Server() <#socketio.Server> | | | | | | (message queue) | | | | | | . Using a Message Queue . | | | | | | | | | | | |0u | | | | | | | | | | | | . | | | | | | Gunicorn uvicorn gevent | | | | | |eventlet . | | | | | |..SS Uvicorn ( ASGI) | | | | | | Socket.IO ASGI | | | | | |Uvicorn . | | | | | | socketio.ASGIApp ASGI Socket.IO socketio.AsyncServer : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.AsyncServer(async_mode='asgi') | | | | | |app = socketio.ASGIApp(sio) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | socketio.ASGIApp Socket.IO ASGI ASGI FastAPI Socket.IO : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.AsyncServer(async_mode='asgi') | | | | | |app = socketio.ASGIApp(sio, other_asgi_app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Uvicorn : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |uvicorn --port 5000 module:app | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Uvicorn worker Gunicorn : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |gunicorn --workers 1 --worker-class uvicorn.workers.UvicornWorker --bind 127.0.0.1:5000 | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Gunicorn worker Gunicorn . | | | | | |Hypercorn Daphne ASGI | | | | | | ASGI Uvicorn Uvicorn ASGI . | | | | | |Aiohttp | | | | | | Socket.IO Aiohttp . socketio.AsyncServer Aiohttp . async_mode : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.AsyncServer(async_mode='aiohttp') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Aiohttp (attach) : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |app = web.Application() | | | | | |sio.attach(app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Aiohttp Socket.IO . . | | | | | | Aiohttp : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |if __name__ == '__main__': | | | | | | web.run_app(app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |Gevent . Gevent (coroutine) | | | | | | greenlet (threads) . | | | | | | socketio.Server Gevent . Gevent | | | | | | async_mode : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.Server(async_mode='gevent') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Socket.IO socketio.WSGIApp <#socketio.WSGIApp> (wrap) | | | | | | WSGI : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |app = socketio.WSGIApp(sio) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | socketio.WSGIApp Socket.IO | | | | | | WSGI WSGI | | | | | | Flask Django Socket.IO : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.Server(async_mode='gevent') | | | | | |app = socketio.WSGIApp(sio, other_wsgi_app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Gevent socketio.WSGIApp | | | | | | WSGI : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |from gevent import pywsgi | | | | | | | | | | | |pywsgi.WSGIServer(('', 8000), app).serve_forever() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |Gevent Gunicorn | | | | | | WSGI | | | | | |Gunicorn Gevent . | | | | | | Gunicorn Gevent : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |$ gunicorn -k gevent -w 1 -b 127.0.0.1:5000 module:app | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Gunicorn Gunicorn . | | | | | | Gevent monkey_patch() (blocking) | | | | | | . Socket.IO monkey patching | | | | | | . | | | | | |Gevent uWSGI | | | | | | uWSGI gevent Socket.IO | | | | | | uWSGI WebSocket . | | | | | | socketio.Server gevent uWSGI eventlet | | | | | | . | | | | | | async_mode : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |# gevent with uWSGI | | | | | |sio = socketio.Server(async_mode='gevent_uwsgi') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | uWSGI . | | | | | | uWSGI . | | | | | | WebSocket WebSocket SSL . | | | | | | uWSGI latency.py 5000 : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |$ uwsgi --http :5000 --gevent 1000 --http-websockets --master --wsgi-file latency.py --callable app | | | | | | | | | | | | | | | | | |0u | | | | | | socketio.AsyncServer Tornado . async_mode : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.AsyncServer(async_mode='tornado') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Tornado request handler Socket.IO : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |app = tornado.web.Application( | | | | | | [ | | | | | | (r"/socket.io/", socketio.get_tornado_handler(sio)), | | | | | | ], | | | | | | # ... other application options | | | | | |) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Tornado Socket.IO . (static) . | | | | | | Tornado : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |app.listen(port) | | | | | |tornado.ioloop.IOLoop.current().start() | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |Eventlet | | | | | |: | | | | | |0.0 | | | | | |3.5 | | | | | | Eventlet . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Eventlet Python (coroutines) . Socket.IO eventlet (transports) long-polling WebSocket . | | | | | | socketio.Server eventlet . async_mode : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.Server(async_mode='eventlet') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | eventlet socketio.WSGIApp WSGI : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |import eventlet | | | | | | | | | | | |app = socketio.WSGIApp(sio) | | | | | |eventlet.wsgi.server(eventlet.listen(('', 8000)), app) | | | | | | | | | | | | | | | | | |0u | | | | | | WSGI eventlet | | | | | |gunicorn (pure Python) . | | | | | | gunicorn : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |$ gunicorn -k eventlet -w 1 module:app | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Gunicorn worker Gunicorn . | | | | | | Eventlet monkey_patch() (blocking) | | | | | | . | | | | | |python-socketio monkey patching | | | | | | . | | | | | |Sanic | | | | | |: | | | | | |0.0 | | | | | |3.5 | | | | | | Sanic . | | | | | | Sanic ASGI . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (Message Queue) | | | | | | | | | | | |Socket.IO . : | | | | | |0.0 | | | | | |o 2 | | | | | | (Highly available) | | | | | | Socket.IO . | | | | | |o 2 | | | | | | | | | | | |Celery (emit) . worker . | | | | | | | | | | | |0u | | | | | | Socket.IO | | | | | | Socket.IO worker | | | | | |Redis | | | | | |RabbitMQ . | | | | | |Redis | | | | | | Redis Redis : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |# socketio.Server class | | | | | |pip install redis | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Redis socketio.RedisManager <#socketio.RedisManager> | | | | | |socketio.AsyncRedisManager <#socketio.AsyncRedisManager> . | | | | | | Redis pub/sub : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |# socketio.Server class | | | | | |mgr = socketio.RedisManager('redis://') | | | | | |sio = socketio.Server(client_manager=mgr) | | | | | | | | | | | |# socketio.AsyncServer class | | | | | |mgr = socketio.AsyncRedisManager('redis://') | | | | | |sio = socketio.AsyncServer(client_manager=mgr) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | client_manager | | | | | | ..SS Kombu | | | | | | Kombu | | | | | | RabbitMQ . | | | | | | pip : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |pip install kombu | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | RabbitMQ AMQP | | | | | | . Kombu | | | | | | . Redis Kombu | | | | | | Redis : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |pip install redis | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | socketio.KombuManager <#socketio.KombuManager> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |mgr = socketio.KombuManager('amqp://') | | | | | |sio = socketio.Server(client_manager=mgr) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | URL KombuManager | | | | | |Connection Kombu | | | | | | URL | | | | | | Kombu . | | | | | | Kombu asyncio | | | | | | socketio.AsyncServer <#socketio.AsyncServer> . | | | | | |Kafka | | | | | | Apache Kafka | | | | | |kafka-python | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |pip install kafka-python | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Kafka socketio.KafkaManager <#socketio.KafkaManager> | | | | | | : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |mgr = socketio.KafkaManager('kafka://') | | | | | |sio = socketio.Server(client_manager=mgr) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Kafka asyncio | | | | | | socketio.AsyncServer <#socketio.AsyncServer> . | | | | | |AioPika | | | | | | RabbitMQ asyncio | | | | | |AioPika : | | | | | | aio_pika pip : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |pip install aio_pika | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | RabbitMQ | | | | | |socketio.AsyncAioPikaManager <#socketio.AsyncAioPikaManager> : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |mgr = socketio.AsyncAioPikaManager('amqp://') | | | | | |sio = socketio.AsyncServer(client_manager=mgr) | | | | | | | | | | | | | | | | | |0u | | | | | | . | | | | | | . localhost . (VPC) . | | | | | | . Socket.IO . URL . | | | | | | (Horizontal Scaling) | | | | | | Socket.IO (stateful) . Socket.IO client_manager . worker (broadcasts) . | | | | | | long-polling : | | | | | |0.0 | | | | | |o 2 | | | | | | Socket.IO . long-polling . worker . | | | | | |o 2 | | | | | | (load balancer) worker . sticky sessions session affinity . | | | | | | | | | | | |0u | | | | | | (Emitting from external processes) | | | | | | . write_only True (thread) . : | | | | | |0.0 | | | | | |3.5 | | | | | | | | | | | |# connect to the redis queue as an external process | | | | | |external_sio = socketio.RedisManager('redis://', write_only=True) | | | | | | | | | | | |# emit an event | | | | | |external_sio.emit('my event', data={'foo': 'bar'}, room='my room') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (write-only) (callbacks) . callback . | | | | | |" API (API REFERENCE)" | | | | | | (Simple Clients) | | | | | |0.0 | | | | | | | | | | | |class socketio.SimpleClient(*args, **kwargs) | | | | | | Socket.IO. | | | | | | Socket.IO websocket long-polling . | | | | | | (positional) (keyword) socketio.Client() <#socketio.Client> . | | | | | |7.0 | | | | | | | | | | | |call(event, data=None, timeout=60) | | | | | | . | | | | | | (acknowledgement) . TimeoutError . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |timeout -- . | | | | | | | | | | | |TimeoutError . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |client_class | | | | | | Client <#socketio.Client> | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connect(url, headers={}, auth=None, transports=None, namespace='/', socketio_path='socket.io', wait_timeout=5) | | | | | | Socket.IO. | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |url -- (URL) Socket.IO. | | | | | | query string . | | | | | | | | | | | | URL . | | | | | |o 2 | | | | | |headers -- | | | | | | . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |auth -- | | | | | | | | | | | | / . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |transports -- . | | | | | | 'polling' 'websocket' . | | | | | | polling | | | | | | websocket . | | | | | |o 2 | | | | | |namespace -- . | | | | | | / . | | | | | |o 2 | | | | | |socketio_path -- (endpoint) Socket.IO | | | | | | . | | | | | | . | | | | | |o 2 | | | | | |wait_timeout -- | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect() | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | . | | | | | | socketio.SimpleClient.call() | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0.TP | | | | | |receive(timeout=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |timeout -- . | | | | | | | | | | | | TimeoutError . | | | | | | | | | | | |0u | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |property sid | | | | | | (session ID) . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |property transport | | | | | | (transport) . | | | | | | polling | | | | | | websocket . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.AsyncSimpleClient(*args, **kwargs) | | | | | | Socket.IO. | | | | | | Socket.IO | | | | | | websocket long-polling . | | | | | | | | | | | | socketio.AsyncClient() <#socketio.AsyncClient> . | | | | | |7.0 | | | | | | | | | | | |async call(event, data=None, timeout=60) | | | | | | . | | | | | | (emit) | | | | | | . | | | | | | TimeoutError . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |timeout -- . | | | | | | | | | | | | TimeoutError . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |client_class | | | | | | AsyncClient <#socketio.AsyncClient> | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async connect(url, headers={}, auth=None, transports=None, namespace='/', socketio_path='socket.io', wait_timeout=5) | | | | | | Socket.IO. | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |url -- (URL) Socket.IO. | | | | | | (query string) . | | | | | | | | | | | | URL | | | | | |. | | | | | |o 2 | | | | | |headers -- (headers) | | | | | | . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |auth -- | | | | | | | | | | | | / . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |transports -- . | | | | | | 'polling' 'websocket'. | | | | | | polling | | | | | | websocket . | | | | | |o 2 | | | | | |namespace -- (namespace) . | | | | | | / . | | | | | |o 2 | | | | | |socketio_path -- (endpoint) Socket.IO | | | | | | . | | | | | | . | | | | | |o 2 | | | | | |wait_timeout -- | | | | | |. . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async disconnect() | | | | | | . | | | | | |: . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async emit(event, data=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: . | | | | | | | | | | | | . | | | | | | socketio.SimpleClient.call() | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async receive(timeout=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |timeout -- . | | | | | | | | | | | | TimeoutError . | | | | | | | | | | | |0u | | | | | |: . | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |property sid | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0.TP | | | | | |property transport | | | | | | . | | | | | | polling | | | | | | websocket . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |" (Clients)" | | | | | |0.0 | | | | | | | | | | | |class socketio.Client(reconnection=True, reconnection_attempts=0, reconnection_delay=1, reconnection_delay_max=5, randomization_factor=0.5, logger=False, serializer='default', json=None, handle_sigint=True, **kwargs) | | | | | | Socket.IO. | | | | | | Socket.IO | | | | | | websocket long-polling . | | | | | |7.0 | | | | | | | | | | | |" (Parameters)" | | | | | |7.0 | | | | | |o 2 | | | | | |reconnection -- | | | | | | True | | | | | |False. True . | | | | | |o 2 | | | | | |reconnection_attempts -- | | | | | | 0 . | | | | | | 0 . | | | | | |o 2 | | | | | |reconnection_delay -- | | | | | | . | | | | | | . | | | | | |o 2 | | | | | |reconnection_delay_max -- | | | | | |. | | | | | |o 2 | | | | | |randomization_factor -- | | | | | | . 0.5 | | | | | | | | | | | | +/- 50% . | | | | | |o 2 | | | | | |logger -- True logger | | | | | | . False . | | | | | |False . | | | | | |logger False . | | | | | |o 2 | | | | | |serializer -- | | | | | |. 'default' 'pickle' | | | | | |'msgpack' 'cbor'. | | | | | | Packet | | | | | | encode() decode() | | | | | |. | | | | | | . | | | | | |o 2 | | | | | |json -- JSON | | | | | |. json dumps loads | | | | | | | | | | | |. (process-wide) | | | | | | JSON . | | | | | |o 2 | | | | | |handle_sigint -- True | | | | | | False | | | | | | . | | | | | | | | | | | | (main thread) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Engine.IO : | | | | | |7.0 | | | | | | | | | | | |" (Parameters)" | | | | | |7.0 | | | | | |o 2 | | | | | |request_timeout -- (timeout) . | | | | | |5 . | | | | | |o 2 | | | | | |http_session -- requests.Session | | | | | | . | | | | | | | | | | | | SSL CA . | | | | | |o 2 | | | | | |ssl_verify -- True SSL False | | | | | | SSL | | | | | | . | | | | | | True . | | | | | |o 2 | | | | | |websocket_extra_options -- | | | | | | | | | | | |websocket.create_connection() . | | | | | |o 2 | | | | | |engineio_logger -- Engine.IO True | | | | | | logger . | | | | | |False . False . | | | | | | | | | | | |engineio_logger False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |call(event, data=None, namespace=None, timeout=60) | | | | | | . | | | | | | (emit) (callback) | | | | | | . | | | | | | TimeoutError . | | | | | | Socket.IO | | | | | | . | | | | | |7.0 | | | | | | | | | | | |" (Parameters)" | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | |str bytes list dict . | | | | | | tuple | | | | | | . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |timeout -- . | | | | | | | | | | | |TimeoutError . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: thread safe ( ) . | | | | | | | | | | | | . | | | | | | ( Lock) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connect(url, headers={}, auth=None, transports=None, namespaces=None, socketio_path='socket.io', wait=True, wait_timeout=1, retry=False) | | | | | | Socket.IO. | | | | | |7.0 | | | | | | | | | | | |" (Parameters)" | | | | | |7.0 | | | | | |o 2 | | | | | |url -- (URL) Socket.IO. | | | | | | (query string) . | | | | | | | | | | | | URL | | | | | |. | | | | | |o 2 | | | | | |headers -- (headers) | | | | | | . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |auth -- | | | | | | | | | | | | / . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |transports -- . | | | | | | 'polling' 'websocket'. | | | | | | polling | | | | | | websocket . | | | | | |o 2 | | | | | |namespaces -- | | | | | |. | | | | | | . | | | | | |o 2 | | | | | |socketio_path -- (endpoint) Socket.IO | | | | | | . | | | | | | . | | | | | |o 2 | | | | | |wait -- True () | | | | | | . | | | | | |False Engine.IO | | | | | | ..IP o 2 | | | | | |wait_timeout -- | | | | | | . . | | | | | | wait | | | | | |True . | | | | | |o 2 | | | | | |retry -- | | | | | | . False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.Client() | | | | | |sio.connect('http://localhost:5000') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connected | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect() | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data=None, namespace=None, callback=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | (tuple) | | | | | | . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |callback -- | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: thread safe . (thread) | | | | | | | | | | | | . | | | | | | ( | | | | | |Lock) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |event(*args, **kwargs) | | | | | | (event handler). | | | | | | on() | | | | | | . | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('my_event') | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event(namespace='/test') | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_sid(namespace=None) | | | | | | sid . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |namespace -- Socket.IO. | | | | | | | | | | | | . | | | | | | Socket.IO sid | | | | | | . | | | | | | | | | | | |0u | | | | | | sid | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |namespaces | | | | | | (namespaces) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |on(event, handler=None, namespace=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . '*' | | | | | | (catch-all) . | | | | | |o 2 | | | | | |handler -- | | | | | |. | | | | | | . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | | | | | | | . '*' | | | | | | (catch-all) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |# as a decorator: | | | | | |@sio.on('connect') | | | | | |def connect_handler(): | | | | | | print('Connected!') | | | | | | | | | | | |# as a method: | | | | | |def message_handler(msg): | | | | | | print('Received message: ', msg) | | | | | | sio.send( 'response') | | | | | |sio.on('message', message_handler) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |o 2 | | | | | | 'connect' ..IP o 2 | | | | | | 'disconnect' . | | | | | |o 2 | | | | | | 'message' (payload) . ( ) . | | | | | |o 2 | | | | | | (catch-all) . | | | | | |o 2 | | | | | | . | | | | | |o 2 | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |class reason | | | | | | . | | | | | |7.0 | | | | | | | | | | | |CLIENT_DISCONNECT = 'client disconnect' | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |SERVER_DISCONNECT = 'server disconnect' | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |TRANSPORT_ERROR = 'transport error' | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |register_namespace(namespace_handler) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |namespace_handler -- Namespace <#socketio.Namespace> | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |send(data, namespace=None, callback=None) | | | | | | . | | | | | | 'message' (emit). | | | | | | emit() . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |data -- . | | | | | |str bytes list dict . | | | | | | tuple | | | | | | . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | |o 2 | | | | | |callback -- | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |shutdown() | | | | | | . | | | | | | . | | | | | | | | | | | |. | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |sleep(seconds=0) | | | | | | (sleep) | | | | | |(async) . | | | | | | | | | | | | async | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |start_background_task(target, *args, **kwargs) | | | | | | async . | | | | | | | | | | | | async | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |target -- . | | | | | |o 2 | | | | | |args -- . | | | | | |o 2 | | | | | |kwargs -- . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | join() . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |transport() | | | | | | . | | | | | | 'polling' | | | | | | 'websocket' . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |wait() | | | | | | . | | | | | | | | | | | |(main thread) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.AsyncClient(reconnection=True, reconnection_attempts=0, reconnection_delay=1, reconnection_delay_max=5, randomization_factor=0.5, logger=False, serializer='default', json=None, handle_sigint=True, **kwargs) | | | | | | Socket.IO asyncio. | | | | | | Socket.IO | | | | | | websocket long-polling . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |reconnection -- | | | | | | True | | | | | |False. True . | | | | | |o 2 | | | | | |reconnection_attempts -- | | | | | | 0 . 0 . | | | | | |o 2 | | | | | |reconnection_delay -- | | | | | | . . | | | | | |o 2 | | | | | |reconnection_delay_max -- . | | | | | |o 2 | | | | | |randomization_factor -- | | | | | | . 0.5 | | | | | | +/- 50% . | | | | | |o 2 | | | | | |logger -- True | | | | | |logger . False | | | | | | . False . | | | | | | logger False . | | | | | |o 2 | | | | | |json -- JSON . | | | | | | json dumps loads | | | | | | . | | | | | |(process-wide) | | | | | |JSON ..IP o 2 | | | | | |handle_sigint -- True False . (main thread) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Engine.IO : | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |request_timeout -- . . | | | | | |o 2 | | | | | |http_session -- aiohttp.ClientSession . SSL CA . | | | | | |o 2 | | | | | |ssl_verify -- True SSL False SSL (self-signed) . True . | | | | | |o 2 | | | | | |websocket_extra_options -- websocket.create_connection() . | | | | | |o 2 | | | | | |engineio_logger -- Engine.IO True (logger) . False . False . engineio_logger False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async call(event, data=None, namespace=None, timeout=60) | | | | | | (emit) . | | | | | | (emit) (callback) . TimeoutError . Socket.IO . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . 'connect' 'message' 'disconnect' . | | | | | |o 2 | | | | | |data -- . str bytes list dict . (tuple) . | | | | | |o 2 | | | | | |namespace -- Socket.IO . . | | | | | |o 2 | | | | | |timeout -- . TimeoutError . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: (concurrent) . . ( Lock) . | | | | | | : (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async connect(url, headers={}, auth=None, transports=None, namespaces=None, socketio_path='socket.io', wait=True, wait_timeout=1, retry=False) | | | | | | Socket.IO. | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |url -- URL Socket.IO. (query string) . URL . | | | | | |o 2 | | | | | |headers -- . . | | | | | |o 2 | | | | | |auth -- / . . | | | | | |o 2 | | | | | |transports -- (transports) . 'polling' 'websocket'. polling websocket . | | | | | |o 2 | | | | | |namespaces -- . . | | | | | |o 2 | | | | | |socketio_path -- (endpoint) Socket.IO . . | | | | | |o 2 | | | | | |wait -- True () . False Engine.IO . | | | | | |o 2 | | | | | |wait_timeout -- . . wait True . | | | | | |o 2 | | | | | |retry -- . False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: (coroutine) . | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |sio = socketio.AsyncClient() | | | | | |await sio.connect('http://localhost:5000') | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connected | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async disconnect() | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async emit(event, data=None, namespace=None, callback=None) | | | | | | (emit) . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . 'connect' 'message' 'disconnect' . | | | | | |o 2 | | | | | |data -- . str bytes list dict . (tuple) . | | | | | |o 2 | | | | | |namespace -- Socket.IO . ..IP o 2 | | | | | |callback -- . . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: . (task) (emit) . ( Lock) . | | | | | | : (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |event(*args, **kwargs) | | | | | | (event handler). | | | | | | on() . | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('my_event') | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (namespace) : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event(namespace='/test') | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_sid(namespace=None) | | | | | | sid . | | | | | |7.0 | | | | | | | | | | | | | | | | | |namespace -- Socket.IO. . Socket.IO sid . | | | | | | | | | | | |0u | | | | | | sid . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |namespaces | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |on(event, handler=None, namespace=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . 'connect' 'message' 'disconnect' . '*' (catch-all) . | | | | | |o 2 | | | | | |handler -- . . | | | | | |o 2 | | | | | |namespace -- Socket.IO . . (catch-all) '*' . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |# as a decorator: | | | | | |@sio.on('connect') | | | | | |def connect_handler(): | | | | | | print('Connected!') | | | | | | | | | | | |# as a method: | | | | | |def message_handler(msg): | | | | | | print('Received message: ', msg) | | | | | | sio.send( 'response') | | | | | |sio.on('message', message_handler) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |o 2 | | | | | | 'connect' . | | | | | |o 2 | | | | | | 'disconnect' . | | | | | |o 2 | | | | | | 'message' (payload) . (acknowledgement callback) . | | | | | |o 2 | | | | | | (catch-all) . | | | | | |o 2 | | | | | | . | | | | | |o 2 | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |class reason | | | | | | . | | | | | |7.0 | | | | | | | | | | | |CLIENT_DISCONNECT = 'client disconnect' | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |SERVER_DISCONNECT = 'server disconnect' | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |TRANSPORT_ERROR = 'transport error' | | | | | | (). | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |register_namespace(namespace_handler) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |namespace_handler -- Namespace <#socketio.Namespace> . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0.TP | | | | | |async send(data, namespace=None, callback=None) | | | | | | . | | | | | | 'message' . | | | | | |emit() . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | (tuple) | | | | | | . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |callback -- | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async shutdown() | | | | | | . | | | | | | . | | | | | | | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async sleep(seconds=0) | | | | | | () (async) | | | | | |. | | | | | | | | | | | | (task) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |start_background_task(target, *args, **kwargs) | | | | | | . | | | | | | | | | | | | | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |target -- . | | | | | |o 2 | | | | | |args -- . | | | | | |o 2 | | | | | |kwargs -- . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio.Task . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |transport() | | | | | | (transport) . | | | | | | 'polling' | | | | | | 'websocket' . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async wait() | | | | | | . | | | | | | (main thread) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.Server(client_manager=None, logger=False, serializer='default', json=None, async_handlers=True, always_connect=False, namespaces=None, **kwargs) | | | | | | Socket.IO. | | | | | | Socket.IO websocket long-polling . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |client_manager -- (client manager) . . | | | | | |o 2 | | | | | |logger -- True . False . False . (fatal) logger False . | | | | | |o 2 | | | | | |serializer -- . 'default' 'pickle' 'msgpack' 'cbor'. Packet encode() decode() . . | | | | | |o 2 | | | | | |json -- JSON . json dumps loads . (process-wide) JSON . | | | | | |o 2 | | | | | |async_handlers -- True (threads) . False . True . | | | | | |o 2 | | | | | |always_connect -- False False . True False . True . False . | | | | | |o 2 | | | | | |namespaces -- (namespaces) . ['/'] . '*' . | | | | | |o 2 | | | | | |kwargs -- Engine.IO. | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Engine.IO : | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |async_mode -- . Deployment . 'threading' 'eventlet' 'gevent' 'gevent_uwsgi'. 'eventlet' 'gevent_uwsgi' 'gevent' 'threading' . . | | | | | |o 2 | | | | | |ping_interval -- . . (grace period) . | | | | | |o 2 | | | | | |ping_timeout -- . . | | | | | |o 2 | | | | | |max_http_buffer_size -- . . HTTP long-polling WebSocket . | | | | | |o 2 | | | | | |allow_upgrades -- . True . | | | | | |o 2 | | | | | |http_compression -- polling . True . | | | | | |o 2 | | | | | |compression_threshold -- . . | | | | | |o 2 | | | | | |cookie -- HTTP (session id) . 'name' (callable) . None () . | | | | | |o 2 | | | | | |cors_allowed_origins -- . (same origin) . '*' CORS [] . | | | | | |o 2 | | | | | |cors_credentials -- ( ) . True . | | | | | |o 2 | | | | | |monitor_clients -- True . False ( ). True . | | | | | |o 2 | | | | | |transports -- . 'polling' 'websocket' . ['polling', 'websocket'] . | | | | | |o 2 | | | | | |engineio_logger -- Engine.IO True . False . False . False engineio_logger . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |call(event, data=None, to=None, sid=None, namespace=None, timeout=60, ignore_queue=False) | | | | | | . | | | | | | (emit) (callback) . TimeoutError . Socket.IO . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . 'connect' 'message' 'disconnect' . | | | | | |o 2 | | | | | |data -- . str bytes list dict . . | | | | | |o 2 | | | | | |to -- (session ID) . | | | | | |o 2 | | | | | |sid -- to. | | | | | |o 2 | | | | | |namespace -- Socket.IO . . | | | | | |o 2 | | | | | |timeout -- . TimeoutError . | | | | | |o 2 | | | | | |ignore_queue -- (message queue) . True . . False . | | | | | | | | | | | |0u | | | | | | | | | | | |: thread-safe . (thread) | | | | | | (emit) | | | | | | . | | | | | | ( Lock) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |close_room(room, namespace=None) | | | | | | . | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |room -- . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect(sid, namespace=None, ignore_queue=False) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (Session ID) . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | |o 2 | | | | | |ignore_queue -- . | | | | | | True | | | | | | (broadcast) . | | | | | | | | | | | |False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data=None, to=None, room=None, skip_sid=None, namespace=None, callback=None, ignore_queue=False) | | | | | | (Emit) . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | tuple | | | | | | . | | | | | |o 2 | | | | | |to -- . | | | | | | | | | | | | | | | | | | . | | | | | | (broadcast) . | | | | | |o 2 | | | | | |room -- to. | | | | | |o 2 | | | | | |skip_sid -- | | | | | | . | | | | | | . | | | | | | sid list . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |callback -- | | | | | | . | | | | | | . callback | | | | | | . | | | | | |o 2 | | | | | |ignore_queue -- . | | | | | | True | | | | | | . | | | | | | . | | | | | | | | | | | |False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: thread-safe . (thread) | | | | | | (emit) | | | | | | . | | | | | | ( Lock) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |enter_room(sid, room, namespace=None) | | | | | | . | | | | | | . emit() | | | | | |send() | | | | | | (broadcast) . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (Session ID) . | | | | | |o 2 | | | | | |room -- . . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |event(*args, **kwargs) | | | | | | (event handler). | | | | | | on() | | | | | | . | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('my_event') | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event(namespace='/test') | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_environ(sid, namespace=None) | | | | | | WSGI environ . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- ..IP o 2 | | | | | |namespace -- Socket.IO. | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_session(sid, namespace=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (session id) . | | | | | |o 2 | | | | | |namespace -- Socket.IO. | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . | | | | | | save_session() (context manager) | | | | | |session . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |handle_request(environ, start_response) | | | | | | HTTP . | | | | | | Socket.IO WSGI | | | | | |. Middleware | | | | | |<#socketio.Middleware> | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |environ -- WSGI. | | | | | |o 2 | | | | | |start_response -- start_response WSGI. | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | HTTP | | | | | |. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |instrument(auth=None, mode='development', read_only=False, server_id=None, namespace='/admin', server_stats_interval=2) | | | | | | Socket.IO Socket.IO | | | | | |Admin UI . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |auth -- Admin UI. | | | | | | ( username password) | | | | | | | | | | | | . (callable) | | | | | | | | | | | | True False . | | | | | | False ( | | | | | | ). | | | | | |o 2 | | | | | |mode -- . 'development' | | | | | | | | | | | | . Admin UI | | | | | | 'production' . | | | | | |o 2 | | | | | |read_only -- True | | | | | | (read-only) . | | | | | | False . | | | | | |o 2 | | | | | |server_id -- . | | | | | | . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | /admin . | | | | | |o 2 | | | | | |server_stats_interval -- | | | | | | (emit) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |leave_room(sid, room, namespace=None) | | | | | | . | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (Session ID) . | | | | | |o 2 | | | | | |room -- . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |on(event, handler=None, namespace=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . '*' | | | | | | (catch-all) . | | | | | |o 2 | | | | | |handler -- . | | | | | | . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . '*' | | | | | | (catch-all) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |# as a decorator: | | | | | |@sio.on('connect', namespace='/chat') | | | | | |def connect_handler(sid, environ): | | | | | | print('Connection request') | | | | | | if environ['REMOTE_ADDR'] in blacklisted: | | | | | | return False # reject | | | | | | | | | | | |# as a method: | | | | | |def message_handler(sid, msg): | | | | | | print('Received message: ', msg) | | | | | | sio.send(sid, 'response') | | | | | |socket_io.on('message', namespace='/chat', handler=message_handler) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |o 2 | | | | | | 'connect' sid ( ) | | | | | | WSGI . | | | | | |o 2 | | | | | | 'disconnect' sid | | | | | | . | | | | | |o 2 | | | | | | 'message' sid | | | | | | . | | | | | | (acknowledgement callback) | | | | | | . | | | | | |o 2 | | | | | | (catch-all) | | | | | | . | | | | | |o 2 | | | | | | (catch-all) | | | | | | . | | | | | |o 2 | | | | | | | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0.TP | | | | | |class reason | | | | | | . | | | | | |7.0 | | | | | | | | | | | |CLIENT_DISCONNECT = 'client disconnect' | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |PING_TIMEOUT = 'ping timeout' | | | | | | (Ping timeout). | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |SERVER_DISCONNECT = 'server disconnect' | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |TRANSPORT_CLOSE = 'transport close' | | | | | | (Transport close). | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |TRANSPORT_ERROR = 'transport error' | | | | | | (Transport error). | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |register_namespace(namespace_handler) | | | | | | (namespace handler). | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |namespace_handler -- Namespace <#socketio.Namespace> | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |rooms(sid, namespace=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (Session ID) . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |save_session(sid, session, namespace=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- . | | | | | |o 2 | | | | | |session -- (session dictionary). | | | | | |o 2 | | | | | |namespace -- Socket.IO. | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |send(data, to=None, room=None, skip_sid=None, namespace=None, callback=None, ignore_queue=False) | | | | | | . | | | | | | 'message' . | | | | | | emit() . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | (tuple) | | | | | | . | | | | | |o 2 | | | | | |to -- . | | | | | | | | | | | | | | | | | | . | | | | | | (broadcast) | | | | | |. | | | | | |o 2 | | | | | |room -- to. | | | | | |o 2 | | | | | |skip_sid -- | | | | | | . | | | | | | . | | | | | | sid . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |callback -- | | | | | | . | | | | | | . | | | | | |(Callback) . | | | | | |o 2 | | | | | |ignore_queue -- (message queue) . | | | | | | True | | | | | | . | | | | | | . | | | | | | | | | | | |False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |session(sid, namespace=None) | | | | | | (context manager). | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |sid -- . | | | | | | | | | | | |0u | | | | | | (context manager) | | | | | | . | | | | | | . : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('connect') | | | | | |def on_connect(sid, environ): | | | | | | username = authenticate_user(environ) | | | | | | if not username: | | | | | | return False | | | | | | with sio.session(sid) as session: | | | | | | session['username'] = username | | | | | | | | | | | |@sio.on('message') | | | | | |def on_message(sid, msg): | | | | | | with sio.session(sid) as session: | | | | | | print('received message from ', session['username']) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |shutdown() | | | | | | Socket.IO. | | | | | | Socket.IO | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |sleep(seconds=0) | | | | | | (async) | | | | | |. | | | | | | | | | | | | | | | | | |async . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |start_background_task(target, *args, **kwargs) | | | | | | (async) ..sp | | | | | | | | | | | | | | | | | |(async mode) . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |target -- . | | | | | |o 2 | | | | | |args -- . | | | | | |o 2 | | | | | |kwargs -- . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | | join() | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |transport(sid, namespace=None) | | | | | | (transport) . | | | | | | 'polling' | | | | | | 'websocket' . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (session) . | | | | | |o 2 | | | | | |namespace -- Socket.IO. | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.AsyncServer(client_manager=None, logger=False, json=None, async_handlers=True, namespaces=None, **kwargs) | | | | | | Socket.IO asyncio. | | | | | | Socket.IO | | | | | | websocket long-polling | | | | | |asyncio . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |client_manager -- | | | | | | . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |logger -- True | | | | | | logger . | | | | | | False . | | | | | | False logger . | | | | | |o 2 | | | | | |json -- JSON | | | | | |. json dumps loads | | | | | | . | | | | | | | | | | | | JSON . | | | | | |o 2 | | | | | |async_handlers -- True | | | | | | . | | | | | | False | | | | | | . True . | | | | | |o 2 | | | | | |always_connect -- False | | | | | | connect | | | | | |False . | | | | | | True | | | | | | connect False | | | | | | . connect | | | | | | | | | | | | True . | | | | | | False . | | | | | |o 2 | | | | | |namespaces -- | | | | | | . | | | | | |['/'] | | | | | |. '*' | | | | | | . | | | | | |o 2 | | | | | |kwargs -- Engine.IO. | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | Engine.IO : | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |async_mode -- . | | | | | | Deployment . | | | | | | "aiohttp" | | | | | |"sanic" "tornado" "asgi". | | | | | | "aiohttp" "sanic" | | | | | |"tornado" "asgi" . | | | | | | . | | | | | |o 2 | | | | | |ping_interval -- | | | | | | . 25 . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |ping_timeout -- | | | | | | . 20 . | | | | | |o 2 | | | | | |max_http_buffer_size -- | | | | | | . 1,000,000 . | | | | | | HTTP long-polling | | | | | | WebSocket . | | | | | |o 2 | | | | | |allow_upgrades -- . | | | | | | True . | | | | | |o 2 | | | | | |http_compression -- | | | | | | polling. True . | | | | | |o 2 | | | | | |compression_threshold -- | | | | | | . 1024 | | | | | | . | | | | | |o 2 | | | | | |cookie -- HTTP | | | | | | . | | | | | | 'name' | | | | | | | | | | | | | | | | | | . None () | | | | | | . | | | | | |o 2 | | | | | |cors_allowed_origins -- | | | | | | . (same origin) | | | | | | . '*' | | | | | | [] CORS . | | | | | |o 2 | | | | | |cors_credentials -- | | | | | |( ) . | | | | | |True . | | | | | |o 2 | | | | | |monitor_clients -- True | | | | | | . | | | | | | ( ) | | | | | |False . True . | | | | | |o 2 | | | | | |transports -- . | | | | | |'polling' 'websocket' . | | | | | |['polling', 'websocket'] . | | | | | |o 2 | | | | | |engineio_logger -- Engine.IO | | | | | |True logger . | | | | | | False . | | | | | |False . | | | | | |engineio_logger False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |attach(app, socketio_path='socket.io') | | | | | | Socket.IO . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async call(event, data=None, to=None, sid=None, namespace=None, timeout=60, ignore_queue=False) | | | | | | ..sp | | | | | | (emit) (callback) . (timeout) TimeoutError . Socket.IO . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | tuple | | | | | | . | | | | | |o 2 | | | | | |to -- (session ID) . | | | | | |o 2 | | | | | |sid -- to. | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |timeout -- . | | | | | | | | | | | | TimeoutError . | | | | | |o 2 | | | | | |ignore_queue -- (message queue) . | | | | | | True | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | | False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: . | | | | | | | | | | | | | | | | | | . ( Lock) | | | | | | . | | | | | | : (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async close_room(room, namespace=None) | | | | | | . | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |room -- . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async disconnect(sid, namespace=None, ignore_queue=False) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | |o 2 | | | | | |ignore_queue -- . | | | | | | True | | | | | | . | | | | | | | | | | | | False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async emit(event, data=None, to=None, room=None, skip_sid=None, namespace=None, callback=None, ignore_queue=False) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . | | | | | |'connect' 'message' 'disconnect' | | | | | | . | | | | | |o 2 | | | | | |data -- . | | | | | | str bytes list dict . | | | | | | tuple | | | | | | . | | | | | |o 2 | | | | | |to -- . | | | | | | | | | | | | | | | | | | | | | | | | . | | | | | | (broadcast) . | | | | | |o 2 | | | | | |room -- to. | | | | | |o 2 | | | | | |skip_sid -- | | | | | | . | | | | | | . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |callback -- | | | | | | . | | | | | | | | | | | | . | | | | | | . | | | | | |o 2 | | | | | |ignore_queue -- . | | | | | | True | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | | False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: . | | | | | | | | | | | | | | | | | | . ( Lock) | | | | | | . | | | | | | : (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async enter_room(sid, room, namespace=None) | | | | | | . | | | | | | . emit() | | | | | |send() | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- . | | | | | |o 2 | | | | | |room -- . . | | | | | |o 2 | | | | | |namespace -- Socket.IO . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |event(*args, **kwargs) | | | | | | (Decorator) (event handler)..sp | | | | | | on() (decorated) . | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.on('my_event') | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (namespace) : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@sio.event(namespace='/test') | | | | | |def my_event(data): | | | | | | print('Received data: ', data) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_environ(sid, namespace=None) | | | | | | WSGI environ . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (session) . | | | | | |o 2 | | | | | |namespace -- Socket.IO. . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async get_session(sid, namespace=None) | | | | | | (user session) . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (session id) . | | | | | |o 2 | | | | | |namespace -- Socket.IO. . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | . . (context manager) session . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async handle_request(*args, **kwargs) | | | | | | HTTP . | | | | | | Socket.IO . HTTP . | | | | | |: coroutine () . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |instrument(auth=None, mode='development', read_only=False, server_id=None, namespace='/admin', server_stats_interval=2) | | | | | | Socket.IO Socket.IO Admin UI (instrument) . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |auth -- Admin UI. ( username password) . (callable) True False . False ( production ). | | | | | |o 2 | | | | | |mode -- . 'development' . Admin UI 'production' . | | | | | |o 2 | | | | | |read_only -- True (read-only) . False . | | | | | |o 2 | | | | | |server_id -- . . | | | | | |o 2 | | | | | |namespace -- Socket.IO . /admin . | | | | | |o 2 | | | | | |server_stats_interval -- (emit) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async leave_room(sid, room, namespace=None) | | | | | | . | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- (session ID) . | | | | | |o 2 | | | | | |room -- . | | | | | |o 2 | | | | | |namespace -- Socket.IO . . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: coroutine () . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |on(event, handler=None, namespace=None) | | | | | | (event handler). | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |event -- . . 'connect' 'message' 'disconnect' . '*' (catch-all) . | | | | | |o 2 | | | | | |handler -- . . | | | | | |o 2 | | | | | |namespace -- Socket.IO . . '*' (catch-all) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5.sp | | | | | | | | | | | |# as a decorator: | | | | | |@sio.on('connect', namespace='/chat') | | | | | |def connect_handler(sid, environ): | | | | | | print('Connection request') | | | | | | if environ['REMOTE_ADDR'] in blacklisted: | | | | | | return False # reject | | | | | | | | | | | |# as a method: | | | | | |def message_handler(sid, msg): | | | | | | print('Received message: ', msg) | | | | | | sio.send(sid, 'response') | | | | | |socket_io.on('message', namespace='/chat', handler=message_handler) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |o 2 | | | | | | 'connect' sid ( ) WSGI . | | | | | |o 2 | | | | | | 'disconnect' sid . | | | | | |o 2 | | | | | | 'message' sid (payload) . (callback) . | | | | | |o 2 | | | | | | (catch-all) . | | | | | |o 2 | | | | | | . | | | | | |o 2 | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |class reason | | | | | | . | | | | | |7.0 | | | | | | | | | | | |CLIENT_DISCONNECT = 'client disconnect' | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |PING_TIMEOUT = 'ping timeout' | | | | | | (Ping timeout). | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |SERVER_DISCONNECT = 'server disconnect' | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |TRANSPORT_CLOSE = 'transport close' | | | | | | (Transport close). | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |TRANSPORT_ERROR = 'transport error' | | | | | | (Transport error). | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |register_namespace(namespace_handler) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |namespace_handler -- Namespace <#socketio.Namespace> . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |rooms(sid, namespace=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- . | | | | | |o 2 | | | | | |namespace -- Socket.IO . . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async save_session(sid, session, namespace=None) | | | | | | . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- . | | | | | |o 2 | | | | | |session -- . | | | | | |o 2 | | | | | |namespace -- Socket.IO. . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async send(data, to=None, room=None, skip_sid=None, namespace=None, callback=None, ignore_queue=False) | | | | | | . | | | | | | 'message' . emit() . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |data -- . str bytes list dict . (tuple) . | | | | | |o 2 | | | | | |to -- . . (broadcast) . | | | | | |o 2 | | | | | |room -- to. | | | | | |o 2 | | | | | |skip_sid -- . . | | | | | |o 2 | | | | | |namespace -- Socket.IO . . | | | | | |o 2 | | | | | |callback -- . . . | | | | | |o 2 | | | | | |ignore_queue -- . True . . False . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |session(sid, namespace=None) | | | | | | (context manager). | | | | | |7.0 | | | | | | | | | | | | | | | | | |sid -- . | | | | | | context manager | | | | | | . context manager | | | | | | . : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |@eio.on('connect') | | | | | |async def on_connect(sid, environ): | | | | | | username = authenticate_user(environ) | | | | | | if not username: | | | | | | return False | | | | | | async with eio.session(sid) as session: | | | | | | session['username'] = username | | | | | | | | | | | |@eio.on('message') | | | | | |async def on_message(sid, msg): | | | | | | async with eio.session(sid) as session: | | | | | | print('received message from ', session['username']) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async shutdown() | | | | | | Socket.IO. | | | | | | Socket.IO | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async sleep(seconds=0) | | | | | | async . | | | | | | | | | | | | async | | | | | | . | | | | | |: coroutine . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |start_background_task(target, *args, **kwargs) | | | | | | async . | | | | | | | | | | | |async . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |target -- . coroutine . | | | | | |o 2 | | | | | |args -- . | | | | | |o 2 | | | | | |kwargs -- . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | asyncio.Task . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |transport(sid, namespace=None) | | | | | | transport . | | | | | | 'polling' | | | | | | 'websocket' . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |sid -- . | | | | | |o 2 | | | | | |namespace -- Socket.IO. | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.exceptions.ConnectionRefusedError(*args) | | | | | | (Connection refused). | | | | | | connect | | | | | | (raise) . | | | | | | . | | | | | |0.0 | | | | | | | | | | | |class socketio.WSGIApp(socketio_app, wsgi_app=None, static_files=None, socketio_path='socket.io') | | | | | | WSGI Socket.IO. | | | | | | Socket.IO . | | | | | | HTTP | | | | | | WSGI . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |socketio_app -- Socket.IO. | | | | | |socketio.Server . | | | | | |o 2 | | | | | |wsgi_app -- WSGI . | | | | | |o 2 | | | | | |static_files -- . | | | | | | . | | | | | |o 2 | | | | | |socketio_path -- (endpoint) Socket.IO | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | |import eventlet | | | | | |from . import wsgi_app | | | | | | | | | | | |sio = socketio.Server() | | | | | |app = socketio.WSGIApp(sio, wsgi_app) | | | | | |eventlet.wsgi.server(eventlet.listen(('', 8000)), app) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.ASGIApp(socketio_server, other_asgi_app=None, static_files=None, socketio_path='socket.io', on_startup=None, on_shutdown=None) | | | | | | ASGI Socket.IO. | | | | | | Socket.IO . | | | | | | | | | | | | HTTP ASGI . | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |socketio_server -- Socket.IO. | | | | | |socketio.AsyncServer . | | | | | |o 2 | | | | | |static_files -- . | | | | | | . | | | | | |o 2 | | | | | |other_asgi_app -- ASGI . | | | | | |o 2 | | | | | |socketio_path -- (endpoint) Socket.IO | | | | | | . . | | | | | | None Socket.IO | | | | | | | | | | | | . None | | | | | | static_files other_asgi_app | | | | | | . | | | | | |o 2 | | | | | |on_startup -- | | | | | | (coroutine) | | | | | |o 2 | | | | | |on_shutdown -- | | | | | | (coroutine) | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |import socketio | | | | | |import uvicorn | | | | | | | | | | | |sio = socketio.AsyncServer() | | | | | |app = socketio.ASGIApp(sio, static_files={ | | | | | | '/': 'index.html', | | | | | | '/static': './public', | | | | | |}) | | | | | |uvicorn.run(app, host='127.0.0.1', port=5000) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.Middleware(socketio_app, wsgi_app=None, socketio_path='socket.io') | | | | | | WSGIApp (deprecated) . | | | | | |0.0 | | | | | | | | | | | |class socketio.ClientNamespace(namespace=None) | | | | | | . | | | | | | | | | | | | Socket.IO . | | | | | | on_ on_connect on_disconnect | | | | | |on_message on_json . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |namespace -- Socket.IO | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |call(event, data=None, namespace=None, timeout=None) | | | | | | . | | | | | | socketio.Client.call() <#socketio.Client.call> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect() | | | | | | . | | | | | | socketio.Client.disconnect() <#socketio.Client.disconnect> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data=None, namespace=None, callback=None) | | | | | | . | | | | | | socketio.Client.emit() <#socketio.Client.emit> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |send(data, room=None, namespace=None, callback=None) | | | | | | . | | | | | | socketio.Client.send() <#socketio.Client.send> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |trigger_event(event, *args) | | | | | | . | | | | | | (overload) | | | | | | . | | | | | | | | | | | | (override) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.Namespace(namespace=None) | | | | | | . | | | | | | | | | | | | Socket.IO . | | | | | | on_ on_connect on_disconnect | | | | | |on_message on_json . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |namespace -- Socket.IO | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |call(event, data=None, to=None, sid=None, namespace=None, timeout=None, ignore_queue=False) | | | | | | . | | | | | | socketio.Server.call() <#socketio.Server.call> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |close_room(room, namespace=None) | | | | | | . | | | | | | socketio.Server.close_room() <#socketio.Server.close_room> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect(sid, namespace=None) | | | | | | . | | | | | | socketio.Server.disconnect() <#socketio.Server.disconnect> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data=None, to=None, room=None, skip_sid=None, namespace=None, callback=None, ignore_queue=False) | | | | | | . | | | | | | socketio.Server.emit() <#socketio.Server.emit> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |enter_room(sid, room, namespace=None) | | | | | | . | | | | | | socketio.Server.enter_room() <#socketio.Server.enter_room> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_session(sid, namespace=None) | | | | | | . | | | | | | socketio.Server.get_session() <#socketio.Server.get_session> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |leave_room(sid, room, namespace=None) | | | | | | . | | | | | | socketio.Server.leave_room() <#socketio.Server.leave_room> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |rooms(sid, namespace=None) | | | | | | . | | | | | | socketio.Server.rooms() <#socketio.Server.rooms> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |save_session(sid, session, namespace=None) | | | | | | . | | | | | | socketio.Server.save_session() <#socketio.Server.save_session> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |send(data, to=None, room=None, skip_sid=None, namespace=None, callback=None, ignore_queue=False) | | | | | | . | | | | | | socketio.Server.send() <#socketio.Server.send> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |session(sid, namespace=None) | | | | | | (context manager). | | | | | | socketio.Server.session() <#socketio.Server.session> | | | | | | namespace | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0.TP | | | | | |trigger_event(event, *args) | | | | | | (handler) . | | | | | | (overload) | | | | | | . | | | | | | | | | | | | (override) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.AsyncClientNamespace(namespace=None) | | | | | | asyncio. | | | | | | (class-based namespace) | | | | | | Socket.IO . | | | | | | on_ on_connect on_disconnect | | | | | |on_message on_json . | | | | | | (coroutines) . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |namespace -- Socket.IO | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async call(event, data=None, namespace=None, timeout=None) | | | | | | . | | | | | | socketio.Client.call() <#socketio.Client.call> | | | | | | namespace | | | | | |. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async disconnect() | | | | | | . | | | | | | socketio.Client.disconnect() <#socketio.Client.disconnect> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async emit(event, data=None, namespace=None, callback=None) | | | | | | . | | | | | | socketio.Client.emit() <#socketio.Client.emit> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async send(data, namespace=None, callback=None) | | | | | | . | | | | | | socketio.Client.send() <#socketio.Client.send> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async trigger_event(event, *args) | | | | | | . | | | | | | (overload) | | | | | | . | | | | | | | | | | | | (override) . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.AsyncNamespace(namespace=None) | | | | | | asyncio. | | | | | | | | | | | | Socket.IO . on_ | | | | | | on_connect on_disconnect on_message | | | | | |on_json . . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |namespace -- Socket.IO | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async call(event, data=None, to=None, sid=None, namespace=None, timeout=None, ignore_queue=False) | | | | | | . | | | | | | socketio.Server.call() <#socketio.Server.call> | | | | | | namespace | | | | | |. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async close_room(room, namespace=None) | | | | | | (room). | | | | | | socketio.Server.close_room() <#socketio.Server.close_room> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async disconnect(sid, namespace=None) | | | | | | . | | | | | | socketio.Server.disconnect() <#socketio.Server.disconnect> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async emit(event, data=None, to=None, room=None, skip_sid=None, namespace=None, callback=None, ignore_queue=False) | | | | | | . | | | | | | socketio.Server.emit() <#socketio.Server.emit> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async enter_room(sid, room, namespace=None) | | | | | | . | | | | | | socketio.Server.enter_room() <#socketio.Server.enter_room> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async get_session(sid, namespace=None) | | | | | | (session) . | | | | | | socketio.Server.get_session() <#socketio.Server.get_session> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async leave_room(sid, room, namespace=None) | | | | | | . | | | | | | socketio.Server.leave_room() <#socketio.Server.leave_room> | | | | | | namespace | | | | | |. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |rooms(sid, namespace=None) | | | | | | . | | | | | | socketio.Server.rooms() <#socketio.Server.rooms> | | | | | | namespace | | | | | |. | | | | | | | | | | | |0u | | | | | |7.0.TP | | | | | |async save_session(sid, session, namespace=None) | | | | | | . | | | | | | socketio.Server.save_session() <#socketio.Server.save_session> namespace namespace . | | | | | |: coroutine . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async send(data, to=None, room=None, skip_sid=None, namespace=None, callback=None, ignore_queue=False) | | | | | | . | | | | | | socketio.Server.send() <#socketio.Server.send> namespace namespace . | | | | | |: coroutine . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |session(sid, namespace=None) | | | | | | context manager. | | | | | | socketio.Server.session() <#socketio.Server.session> namespace namespace . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async trigger_event(event, *args) | | | | | | (handler) . | | | | | | (overload) . (override) . | | | | | |: coroutine . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | (Managers) | | | | | |0.0 | | | | | | | | | | | |class socketio.Manager | | | | | | . | | | | | | (broadcasting) . . . | | | | | |7.0 | | | | | | | | | | | |close_room(room, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connect(eio_sid, namespace) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect(sid, namespace, **kwargs) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data, namespace, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | (emit) namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | (iterable) namespace . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | (iterable) . | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |leave_room(sid, namespace, room) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |pre_disconnect(sid, namespace) | | | | | | (to-be-disconnected). | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |trigger_callback(sid, id, data) | | | | | | callback . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.PubSubManager(channel='socketio', write_only=False, logger=None, json=None) | | | | | | pub/sub. | | | | | | pub/sub . pub/sub Socket.IO . | | | | | | pub/sub . | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |channel -- . | | | | | |o 2 | | | | | |write_only -- True (emit) . False . write-only . | | | | | |o 2 | | | | | |logger -- . . | | | | | |o 2 | | | | | |json -- JSON . json dumps loads . write_only True . JSON . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |close_room(room, namespace=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connect(eio_sid, namespace) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect(sid, namespace=None, **kwargs) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data, namespace=None, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | (emit) namespace..sp | | | | | | . | | | | | | Server.emit() <#socketio.Server.emit> . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | iterable namespace . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | iterable . | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |leave_room(sid, namespace, room) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |pre_disconnect(sid, namespace) | | | | | | --- . | | | | | | (disconnect handler) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |trigger_callback(sid, id, data) | | | | | | callback . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.KombuManager(url='amqp://guest:guest@localhost:5672//', channel='socketio', write_only=False, logger=None, json=None, connection_options=None, exchange_options=None, queue_options=None, producer_options=None) | | | | | | kombu . | | | | | | backend RabbitMQ Redis kombu . | | | | | | backend kombu Server <#socketio.Server> : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |url = 'amqp://user:password@hostname:port//' | | | | | |server = socketio.Server(client_manager=socketio.KombuManager(url)) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |url -- URL backend. URL 'amqp://guest:guest@localhost:5672//' 'redis://localhost:6379/' RabbitMQ Redis. URL kombu . | | | | | |o 2 | | | | | |channel -- . . | | | | | |o 2 | | | | | |write_only -- True (emit) . False . write-only . | | | | | |o 2 | | | | | |logger -- (logger) . logger . | | | | | |o 2 | | | | | |json -- JSON . json dumps loads . write_only True JSON . | | | | | |o 2 | | | | | |connection_options -- kombu.Connection(). | | | | | |o 2 | | | | | |exchange_options -- kombu.Exchange(). | | | | | |o 2 | | | | | |queue_options -- kombu.Queue(). | | | | | |o 2 | | | | | |producer_options -- kombu.Producer(). | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |close_room(room, namespace=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connect(eio_sid, namespace) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect(sid, namespace=None, **kwargs) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data, namespace=None, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | namespace. | | | | | | . | | | | | | Server.emit() <#socketio.Server.emit> . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | iterable namespace . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | iterable . | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |leave_room(sid, namespace, room) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0.TP | | | | | |pre_disconnect(sid, namespace) | | | | | | -- . | | | | | | (disconnect handler) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |trigger_callback(sid, id, data) | | | | | | (callback) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.RedisManager(url='redis://localhost:6379/0', channel='socketio', write_only=False, logger=None, json=None, redis_options=None) | | | | | | Redis. | | | | | | (backend) Redis . kombu Redis . | | | | | | Redis Server <#socketio.Server> : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |url = 'redis://hostname:port/0' | | | | | |server = socketio.Server(client_manager=socketio.RedisManager(url)) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |url -- (URL) Redis. Redis redis:// . TLS rediss:// . Redis Sentinel redis+sentinel:// db URL . : | | | | | |redis+sentinel://user:pw@host1:1234,host2:2345/0/myredis. | | | | | |o 2 | | | | | |channel -- . . | | | | | |o 2 | | | | | |write_only -- True . False . - (write-only) . | | | | | |o 2 | | | | | |logger -- (logger) . logger . | | | | | |o 2 | | | | | |json -- JSON . json dumps loads . write_only True . JSON . | | | | | |o 2 | | | | | |redis_options -- Redis.from_url() Sentinel(). | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |close_room(room, namespace=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connect(eio_sid, namespace) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect(sid, namespace=None, **kwargs) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data, namespace=None, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | namespace. | | | | | | . | | | | | | Server.emit() <#socketio.Server.emit> . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | (iterable) namespace . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | (iterable) . | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |leave_room(sid, namespace, room) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |pre_disconnect(sid, namespace) | | | | | | -- . | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |trigger_callback(sid, id, data) | | | | | | (callback) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.KafkaManager(url='kafka://localhost:9092', channel='socketio', write_only=False, logger=None, json=None) | | | | | | Kafka. | | | | | | (backend) Kafka . | | | | | | Kafka Server <#socketio.Server> : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |url = 'kafka://hostname:port' | | | | | |server = socketio.Server(client_manager=socketio.KafkaManager(url)) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | | | | | | | |7.0 | | | | | |o 2 | | | | | |url -- (URL) Kafka. Kafka kafka:// . (high availability) Kafka URL . | | | | | |o 2 | | | | | |channel -- (topic) . . | | | | | |o 2 | | | | | |write_only -- True . False . - (write-only) ..IP o 2 | | | | | |logger -- (logger) . | | | | | | . | | | | | |o 2 | | | | | |json -- JSON | | | | | |. json dumps loads | | | | | | . write_only | | | | | | True . JSON | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |close_room(room, namespace=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connect(eio_sid, namespace) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect(sid, namespace=None, **kwargs) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data, namespace=None, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | (emit) | | | | | | namespace. | | | | | | | | | | | | . | | | | | | Server.emit() <#socketio.Server.emit> . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | (iterable) namespace . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | . | | | | | | | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |leave_room(sid, namespace, room) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |pre_disconnect(sid, namespace) | | | | | | (to-be-disconnected). | | | | | | | | | | | | (disconnect handler) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |trigger_callback(sid, id, data) | | | | | | (callback) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.ZmqManager(url='zmq+tcp://localhost:5555+5556', channel='socketio', write_only=False, logger=None, json=None) | | | | | | zmq. | | | | | |: zmq | | | | | | . zmq eventlet . | | | | | | zmq | | | | | | . zmq Server <#socketio.Server> | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |url = 'zmq+tcp://hostname:port1+port2' | | | | | |server = socketio.Server(client_manager=socketio.ZmqManager(url)) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |url -- (URL) zmq | | | | | | . | | | | | |o 2 | | | | | |channel -- | | | | | |. . | | | | | |o 2 | | | | | |write_only -- True . | | | | | | False | | | | | | . | | | | | | | | | | | | . | | | | | |o 2 | | | | | |logger -- . | | | | | | . | | | | | |o 2 | | | | | |json -- JSON | | | | | |. json dumps loads | | | | | | . write_only | | | | | | True . JSON | | | | | | . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | | zmq_manager (message broker) zmq . | | | | | | | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |import zmq | | | | | | | | | | | |receiver = zmq.Context().socket(zmq.PULL) | | | | | |receiver.bind("tcp://*:5555") | | | | | | | | | | | |publisher = zmq.Context().socket(zmq.PUB) | | | | | |publisher.bind("tcp://*:5556") | | | | | | | | | | | |while True: | | | | | | publisher.send(receiver.recv()) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |close_room(room, namespace=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |connect(eio_sid, namespace) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |disconnect(sid, namespace=None, **kwargs) | | | | | | namespace. | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |emit(event, data, namespace=None, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | (emit) | | | | | | namespace. | | | | | | | | | | | | ..sp | | | | | | Server.emit() <#socketio.Server.emit> . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | (iterable) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |leave_room(sid, namespace, room) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |pre_disconnect(sid, namespace) | | | | | | (to-be-disconnected). | | | | | | | | | | | | (disconnect handler) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |trigger_callback(sid, id, data) | | | | | | (callback) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.AsyncManager | | | | | | asyncio. | | | | | |7.0 | | | | | | | | | | | |async close_room(room, namespace) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async connect(eio_sid, namespace) | | | | | | . | | | | | |: . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async disconnect(sid, namespace, **kwargs) | | | | | | . | | | | | |: . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async emit(event, data, namespace, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | (emit) | | | | | | . | | | | | |: . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | |: . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async leave_room(sid, namespace, room) | | | | | | . | | | | | |: . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |pre_disconnect(sid, namespace) | | | | | | . | | | | | | | | | | | | | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async trigger_callback(sid, id, data) | | | | | | . | | | | | |: . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.AsyncRedisManager(url='redis://localhost:6379/0', channel='socketio', write_only=False, logger=None, json=None, redis_options=None) | | | | | | Redis asyncio. | | | | | | Redis | | | | | | . | | | | | | Redis AsyncServer <#socketio.AsyncServer> | | | | | | : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |url = 'redis://hostname:port/0' | | | | | |server = socketio.AsyncServer( | | | | | | client_manager=socketio.AsyncRedisManager(url)) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |url -- (URL) Redis. | | | | | | Redis redis:// . | | | | | | TLS rediss:// . | | | | | | Redis Sentinel redis+sentinel:// | | | | | | db URL | | | | | | . : | | | | | |redis+sentinel://user:pw@host1:1234,host2:2345/0/myredis. | | | | | |o 2 | | | | | |channel -- | | | | | |. . | | | | | |o 2 | | | | | |write_only -- True (emit) | | | | | | . False | | | | | | . (write-only) | | | | | | | | | | | | ..IP o 2 | | | | | |logger -- logger . logger . | | | | | |o 2 | | | | | |json -- JSON . json dumps loads . write_only True . JSON . | | | | | |o 2 | | | | | |redis_options -- Redis.from_url() Sentinel(). | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async close_room(room, namespace=None) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async connect(eio_sid, namespace) | | | | | | namespace. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async disconnect(sid, namespace, **kwargs) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async emit(event, data, namespace=None, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | namespace. | | | | | | . | | | | | | Server.emit() <#socketio.Server.emit> . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | (iterable) namespace . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | . | | | | | | (multi-server) . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async leave_room(sid, namespace, room) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |pre_disconnect(sid, namespace) | | | | | | ---. | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async trigger_callback(sid, id, data) | | | | | | (callback) . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | | | | | | | |class socketio.AsyncAioPikaManager(url='amqp://guest:guest@localhost:5672//', channel='socketio', write_only=False, logger=None, json=None) | | | | | | aio_pika asyncio . | | | | | | RabbitMQ . | | | | | | aio_pika Server <#socketio.Server> : | | | | | |7.0 | | | | | |3.5 | | | | | | | | | | | |url = 'amqp://user:password@hostname:port//' | | | | | |server = socketio.Server(client_manager=socketio.AsyncAioPikaManager( | | | | | | url)) | | | | | | | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | | (Parameters) | | | | | |7.0 | | | | | |o 2 | | | | | |url -- URL . URL 'amqp://guest:guest@localhost:5672//' RabbitMQ . | | | | | |o 2 | | | | | |channel -- . . exchange rabbitmq . | | | | | |o 2 | | | | | |write_only -- True (emit) . False . (write-only) . | | | | | |o 2 | | | | | |logger -- logger . logger . | | | | | |o 2 | | | | | |json -- JSON . json dumps loads . write_only True . JSON . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async close_room(room, namespace=None) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async connect(eio_sid, namespace) | | | | | | namespace. | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async disconnect(sid, namespace, **kwargs) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0.TP | | | | | |async emit(event, data, namespace=None, room=None, skip_sid=None, callback=None, to=None, **kwargs) | | | | | | namespace. | | | | | | (message queue) . | | | | | | Server.emit() <#socketio.Server.emit> . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async enter_room(sid, namespace, room, eio_sid=None) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_namespaces() | | | | | | (iterable) namespace . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_participants(namespace, room) | | | | | | (iterable) . | | | | | | (multi-server) . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |get_rooms(sid, namespace) | | | | | | . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |initialize() | | | | | | . . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async leave_room(sid, namespace, room) | | | | | | . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |pre_disconnect(sid, namespace) | | | | | | --- (to-be-disconnected). | | | | | | (disconnect handler) . | | | | | | | | | | | |0u | | | | | |7.0 | | | | | | | | | | | |async trigger_callback(sid, id, data) | | | | | | (callback) . | | | | | |: (coroutine) . | | | | | | | | | | | |0u | | | | | | | | | | | |0u | | | | | |0.0 | | | | | |o 2 | | | | | | <> | | | | | |o 2 | | | | | | <> | | | | | |o 2 | | | | | | <> | | | | | | | | | | | |0u | | | | | |" (AUTHORS)" | | | | | |Miguel Grinberg | | | | | |" (COPYRIGHT)" | | | | | |2018, Miguel Grinberg | | | | | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-----------------------+--------------------------+--------------------------+ February 7, 2026 PYTHON-SOCKETIO(1)