A socket.io client library for Python http://pypi.python.org/pypi/socketIO-client
Find a file
2015-02-16 15:04:56 -05:00
socketIO_client Fix more for python3 2015-02-16 15:00:03 -05:00
.gitignore Reviewed code 2013-04-14 23:23:30 -07:00
.travis.yml Fix for Python 3 2015-02-16 14:12:33 -05:00
CHANGES.md Updated change log 2015-02-16 15:04:56 -05:00
LICENSE Reviewed code 2013-04-14 23:23:30 -07:00
MANIFEST.in Update acknowledgments for 0.5.4 2015-02-16 11:09:45 -05:00
README.md Fix python3 ReferenceError 2015-02-16 14:23:46 -05:00
serve-tests.js Enable Travis CI 2015-02-16 13:37:13 -05:00
setup.cfg Add stream=True #45 2015-02-15 08:48:27 -05:00
setup.py Fix for Python 3 2015-02-16 14:12:33 -05:00
TODO.goals Update goals 2015-02-16 08:17:11 -05:00

Build Status

socketIO-client

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

Installation

Install 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-client

Usage

Activate isolated environment.

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

Launch your socket.io server.

node serve-tests.js

For debugging information, run these commands first.

import logging
logging.basicConfig(level=logging.DEBUG)

Emit.

from socketIO_client import SocketIO, LoggingNamespace

with SocketIO('localhost', 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('localhost', 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_aaa_response(*args):
    print 'on_aaa_response', args

socketIO = SocketIO('localhost', 8000, LoggingNamespace)
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, 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, 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)
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.

from socketIO_client import SocketIO

SocketIO('https://localhost', verify=False)

Specify params, headers, cookies, proxies thanks to the requests library.

from socketIO_client import SocketIO
from base64 import b64encode

SocketIO('localhost', 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('localhost')
socketIO.wait()

License

This software is available under the MIT License.

Credits