Package: py-socketio-client
socketIO-clientHere is asocket.ioclient library for Python.  You can use it to write test code for your socket.io server.Please note that this version implementssocket.io protocol 1.x, which is not backwards compatible.  If you want to communicate usingsocket.io protocol 0.9(which is compatible withgevent-socketio), please usesocketIO-client 0.5.7.2.InstallationInstall the package in an isolated environment.VIRTUAL_ENV=$HOME/.virtualenv

# Prepare isolated environment
virtualenv $VIRTUAL_ENV

# Activate isolated environment
source $VIRTUAL_ENV/bin/activate

# Install package
pip install -U socketIO-clientUsageActivate isolated environment.VIRTUAL_ENV=$HOME/.virtualenv
source $VIRTUAL_ENV/bin/activateLaunch your socket.io server.cd $(python -c "import os, socketIO_client;\
    print(os.path.dirname(socketIO_client.__file__))")

DEBUG=* node tests/serve.js  # Start socket.io server in terminal one
DEBUG=* node tests/proxy.js  # Start proxy server in terminal two
nosetests                    # Run tests in terminal threeFor debugging information, run these commands first.import logging
logging.getLogger('socketIO-client').setLevel(logging.DEBUG)
logging.basicConfig()Emit.from socketIO_client import SocketIO, LoggingNamespace

with SocketIO('127.0.0.1', 8000, LoggingNamespace) as socketIO:
    socketIO.emit('aaa')
    socketIO.wait(seconds=1)Emit with callback.from socketIO_client import SocketIO, LoggingNamespace

def on_bbb_response(*args):
    print('on_bbb_response', args)

with SocketIO('127.0.0.1', 8000, LoggingNamespace) as socketIO:
    socketIO.emit('bbb', {'xxx': 'yyy'}, on_bbb_response)
    socketIO.wait_for_callbacks(seconds=1)Define events.from socketIO_client import SocketIO, LoggingNamespace

def on_connect():
    print('connect')

def on_disconnect():
    print('disconnect')

def on_reconnect():
    print('reconnect')

def on_aaa_response(*args):
    print('on_aaa_response', args)

socketIO = SocketIO('127.0.0.1', 8000, LoggingNamespace)
socketIO.on('connect', on_connect)
socketIO.on('disconnect', on_disconnect)
socketIO.on('reconnect', on_reconnect)

# Listen
socketIO.on('aaa_response', on_aaa_response)
socketIO.emit('aaa')
socketIO.emit('aaa')
socketIO.wait(seconds=1)

# Stop listening
socketIO.off('aaa_response')
socketIO.emit('aaa')
socketIO.wait(seconds=1)

# Listen only once
socketIO.once('aaa_response', on_aaa_response)
socketIO.emit('aaa')  # Activate aaa_response
socketIO.emit('aaa')  # Ignore
socketIO.wait(seconds=1)Define events in a namespace.from socketIO_client import SocketIO, BaseNamespace

class Namespace(BaseNamespace):

    def on_aaa_response(self, *args):
        print('on_aaa_response', args)
        self.emit('bbb')

socketIO = SocketIO('127.0.0.1', 8000, Namespace)
socketIO.emit('aaa')
socketIO.wait(seconds=1)Define standard events.from socketIO_client import SocketIO, BaseNamespace

class Namespace(BaseNamespace):

    def on_connect(self):
        print('[Connected]')

    def on_reconnect(self):
        print('[Reconnected]')

    def on_disconnect(self):
        print('[Disconnected]')

socketIO = SocketIO('127.0.0.1', 8000, Namespace)
socketIO.wait(seconds=1)Define different namespaces on a single socket.from socketIO_client import SocketIO, BaseNamespace

class ChatNamespace(BaseNamespace):

    def on_aaa_response(self, *args):
        print('on_aaa_response', args)

class NewsNamespace(BaseNamespace):

    def on_aaa_response(self, *args):
        print('on_aaa_response', args)

socketIO = SocketIO('127.0.0.1', 8000)
chat_namespace = socketIO.define(ChatNamespace, '/chat')
news_namespace = socketIO.define(NewsNamespace, '/news')

chat_namespace.emit('aaa')
news_namespace.emit('aaa')
socketIO.wait(seconds=1)Connect via SSL (https://github.com/invisibleroads/socketIO-client/issues/54).from socketIO_client import SocketIO

# Skip server certificate verification
SocketIO('https://127.0.0.1', verify=False)
# Verify the server certificate
SocketIO('https://127.0.0.1', verify='server.crt')
# Verify the server certificate and encrypt using client certificate
socketIO = SocketIO('https://127.0.0.1', verify='server.crt', cert=(
    'client.crt', 'client.key'))Specify params, headers, cookies, proxies thanks to therequestslibrary.from socketIO_client import SocketIO
from base64 import b64encode

SocketIO(
    '127.0.0.1', 8000,
    params={'q': 'qqq'},
    headers={'Authorization': 'Basic ' + b64encode('username:password')},
    cookies={'a': 'aaa'},
    proxies={'https': 'https://proxy.example.com:8080'})Wait forever.from socketIO_client import SocketIO

socketIO = SocketIO('127.0.0.1', 8000)
socketIO.wait()Don’t wait forever.from requests.exceptions import ConnectionError
from socketIO_client import SocketIO

try:
    socket = SocketIO('127.0.0.1', 8000, wait_for_connection=False)
    socket.wait()
except ConnectionError:
    print('The server is down. Try again later.')LicenseThis software is available under the MIT License.CreditsGuillermo Rauchwrote thesocket.io specification.Hiroki Ohtaniwrotewebsocket-client.Roderick Hodgsonwrote aprototype for a Python client to a socket.io server.Alexandre Bourgetwrotegevent-socketio, which is a socket.io server written in Python.Paul Kienzle,Zac Lee,Josh VanderLinden,Ian Fitzpatrick,Lucas Klein,Rui Chicoria,Travis Odom,Patrick Huber,Brad Campbell,Daniel,Sean Arietta,Sacha Stafyniaksubmitted code to expand support of the socket.io protocol.Bernard Pratz,Francis Bullwrote prototypes to support xhr-polling and jsonp-polling.Joe Palmersponsored development.Eric Chen,Denis Zinevich,Thiago Hersan,Nayef Copty,Jörgen Karlsson,Branden Ghena,Tim Landscheidt,Matt Porritt,Matt Dainty,Thomaz de Oliveira dos Reis,Felix König,George Wilson,Andreas Strikos,Alessio SergiClaudio Yacarini,Khairi Hafsham,Robbie Clarkensuggested ways to make the connection more robust.Merlijn van Deen,Frederic Sureau,Marcus Cobden,Drew Hutchison,wuurrd,Adam Kecer,Alex Monk,Vishal P R,John Vandenberg,Thomas Grainger,Daniel Quinn,Adric Worley,Adam Roses Wight,Jan Včelákproposed changes that make the library more friendly and practical for you!0.7Fixed thread cleanupFixed disconnect detection if defined directly thanks to Andreas StrikosFixed support for unicode payloads0.6Upgraded to socket.io protocol 1.x thanks to Sean Arietta and Joe PalmerFixed support for Python 3Fixed SSL supportAdded locks to fix concurrency issues with polling transportAdded SocketIO.off() and SocketIO.once()0.5Added support for Python 3Added support for jsonp-polling thanks to Bernard PratzAdded support for xhr-polling thanks to Francis BullAdded support for query params and cookiesFixed sending acknowledgments in custom namespaces thanks to Travis OdomRewrote library to use coroutines instead of threads to save memory0.4Added support for custom headers and proxies thanks to Rui and SajalAdded support for server-side callbacks thanks to Zac LeeMerged Channel functionality into BaseNamespace thanks to Alexandre Bourget0.3Added support for secure connectionsAdded SocketIO.wait()Improved exception handling in _RhythmicThread and _ListenerThread0.2Added support for callbacks and channels thanks to Paul KienzleIncorporated suggestions from Josh VanderLinden and Ian Fitzpatrick0.1Wrappedcode from StackOverflowAdded exception handling to destructor in case of connection failure