Skip to main content
Join the official Python Developers Survey 2018 and win valuable prizes: Start the survey!

A socket.io client library

Project description

Here is a socket.io client library for Python. You can use it to write test code for your socket.io server.

Installation

VIRTUAL_ENV=$HOME/.virtualenv

# Prepare isolated environment
virtualenv $VIRTUAL_ENV

# Activate isolated environment
source $VIRTUAL_ENV/bin/activate

# Install package
pip install -U socketIO-client

Usage

Activate isolated environment.

VIRTUAL_ENV=$HOME/.virtualenv
source $VIRTUAL_ENV/bin/activate

Emit.

from socketIO_client import SocketIO

with SocketIO('localhost', 8000) as socketIO:
    socketIO.emit('aaa')
    socketIO.wait(seconds=1)

Emit with callback.

from socketIO_client import SocketIO

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

with SocketIO('localhost', 8000) as socketIO:
    socketIO.emit('bbb', {'xxx': 'yyy'}, on_bbb_response)
    socketIO.wait_for_callbacks(seconds=1)

Define events.

from socketIO_client import SocketIO

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

socketIO = SocketIO('localhost', 8000)
socketIO.on('aaa_response', on_aaa_response)
socketIO.emit('aaa')
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('localhost', 8000)
socketIO.define(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]'

socketIO = SocketIO('localhost', 8000)
socketIO.define(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('localhost', 8000)
chatNamespace = socketIO.define(ChatNamespace, '/chat')
newsNamespace = socketIO.define(NewsNamespace, '/news')

chatNamespace.emit('aaa')
newsNamespace.emit('aaa')
socketIO.wait(seconds=1)

Open secure websockets (HTTPS / WSS) behind a proxy.

from socketIO_client import SocketIO

SocketIO('localhost', 8000,
    secure=True,
    proxies={'https': 'https://proxy.example.com:8080'})

Specify custom headers thanks to the requests library.

from socketIO_client import SocketIO
from base64 import b64encode

SocketIO('localhost', 8000,
    headers={'Authorization': 'Basic ' + b64encode('username:password')})

License

This software is available under the MIT License.

Credits

0.4

  • Added support for custom headers and proxies thanks to Rui and Sajal
  • Added support for server-side callbacks thanks to Zac Lee
  • Added low-level _SocketIO to remove cyclic references
  • Merged Channel functionality into BaseNamespace thanks to Alexandre Bourget

0.3

  • Added support for secure connections
  • Added socketIO.wait()
  • Improved exception handling in _RhythmicThread and _ListenerThread

0.2

  • Added support for callbacks and channels thanks to Paul Kienzle
  • Incorporated suggestions from Josh VanderLinden and Ian Fitzpatrick

0.1

  • Wrapped code from StackOverflow
  • Added exception handling to destructor in case of connection failure

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
socketIO-client-0.4.tar.gz (7.5 kB) Copy SHA256 hash SHA256 Source None Apr 26, 2013

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page