Skip to main content

A socket.io client library

Project description

https://travis-ci.org/invisibleroads/socketIO-client.svg?branch=v0.5.4

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

0.5.4

  • Fixed reconnection in the event of server restart

  • Fixed calling on_reconnect() so that it is actually called

  • Set default Namespace=None

  • Added support for Python 3.4

0.5.3

  • Updated wait loop to exit if the client wants to disconnect

  • Fixed calling on_connect() so that it is called only once

  • Set heartbeat_interval to be half of the heartbeat_timeout

0.5.2

  • Replaced secure=True with host=’https://example.com

  • Fixed sending heartbeats thanks to Travis Odom

0.5.1

  • Added error handling in the event of websocket timeout

  • Fixed sending acknowledgments in custom namespaces thanks to Travis Odom

0.5

  • Rewrote library to use coroutines instead of threads to save memory

  • Improved connection resilience

  • Added support for xhr-polling thanks to Francis Bull

  • Added support for jsonp-polling thanks to Bernard Pratz

  • Added support for query params and cookies

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

Project details


Download files

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

Source Distribution

socketIO-client-0.5.5.tar.gz (11.8 kB view details)

Uploaded Source

File details

Details for the file socketIO-client-0.5.5.tar.gz.

File metadata

File hashes

Hashes for socketIO-client-0.5.5.tar.gz
Algorithm Hash digest
SHA256 d80d48198c761a9f2e34fbedf3976e511ed0ca091816832a012d7e7960289cf4
MD5 be437df82ee1d791db867d47a88a9d8b
BLAKE2b-256 ddeeef0d73b41d04925bbe6f4be22abb80397fa59576e36a3230f0b9b059a76d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page