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
Guillermo Rauch wrote the socket.io specification.
Hiroki Ohtani wrote websocket-client.
rod wrote a prototype for a Python client to a socket.io server on StackOverflow.
Alexandre Bourget wrote gevent-socketio, which is a socket.io server written in Python.
Paul Kienzle, Zac Lee, Josh VanderLinden, Ian Fitzpatrick, Lucas Klein submitted code to expand support of the socket.io protocol.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.