Incorporated suggestions from Paul Kienzle, Josh VanderLinden, Ian Fitzpatrick
This commit is contained in:
parent
7d68382340
commit
672b2fc679
9 changed files with 525 additions and 97 deletions
119
README.rst
119
README.rst
|
|
@ -1,41 +1,126 @@
|
|||
socketIO.client
|
||||
socketIO-client
|
||||
===============
|
||||
Here is a barebones `socket.io <http://socket.io>`_ client library for Python.
|
||||
Here is a socket.io_ client library for Python.
|
||||
|
||||
Thanks to `rod <http://stackoverflow.com/users/370115/rod>`_ for his `StackOverflow question and answer <http://stackoverflow.com/questions/6692908/formatting-messages-to-send-to-socket-io-node-js-server-from-python-client/>`_, on which this code is based.
|
||||
.. _socket.io: http://socket.io
|
||||
|
||||
Thanks also to `liris <https://github.com/liris>`_ for his `websocket-client <https://github.com/liris/websocket-client>`_ and to `guille <https://github.com/guille>`_ for the `socket.io specification <https://github.com/LearnBoost/socket.io-spec>`_.
|
||||
Thanks to rod_ for the `StackOverflow question and answer`__ on which this code is based.
|
||||
|
||||
.. _rod: http://stackoverflow.com/users/370115/rod
|
||||
.. _StackOverflowQA: http://stackoverflow.com/questions/6692908/formatting-messages-to-send-to-socket-io-node-js-server-from-python-client
|
||||
__ StackOverflowQA_
|
||||
|
||||
Thanks to liris_ for websocket-client_ and to guille_ for the `socket.io specification`_.
|
||||
|
||||
.. _liris: https://github.com/liris
|
||||
.. _websocket-client: https://github.com/liris/websocket-client
|
||||
.. _guille: https://github.com/guille
|
||||
.. _socket.io specification: https://github.com/LearnBoost/socket.io-spec
|
||||
|
||||
Thanks to `Paul Kienzle`_, `Josh VanderLinden`_, `Ian Fitzpatrick`_ for submitting code to expand support of the socket.io protocol.
|
||||
|
||||
.. _Paul Kienzle: https://github.com/pkienzle
|
||||
.. _Josh VanderLinden: https://github.com/codekoala
|
||||
.. _Ian Fitzpatrick: https://github.com/GraphEffect
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
::
|
||||
|
||||
VIRTUAL_ENV=$HOME/.virtualenv
|
||||
|
||||
# Prepare isolated environment
|
||||
ENV=$HOME/Projects/env
|
||||
virtualenv $ENV
|
||||
mkdir $ENV/opt
|
||||
virtualenv $VIRTUAL_ENV
|
||||
|
||||
# Activate isolated environment
|
||||
source $ENV/bin/activate
|
||||
source $VIRTUAL_ENV/bin/activate
|
||||
|
||||
# Install package
|
||||
easy_install -U socketIO-client
|
||||
easy_install -U socketIOClient
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
::
|
||||
---
|
||||
Activate isolated environment.
|
||||
.. code-block:: bash
|
||||
|
||||
ENV=$HOME/Projects/env
|
||||
source $ENV/bin/activate
|
||||
python
|
||||
VIRTUAL_ENV=$HOME/.virtualenv
|
||||
source $VIRTUAL_ENV/bin/activate
|
||||
|
||||
from socketIO import SocketIO
|
||||
s = SocketIO('localhost', 8000)
|
||||
s.emit('news', {'hello': 'world'})
|
||||
Emit.
|
||||
.. code-block:: python
|
||||
|
||||
from socketIOClient import SocketIO
|
||||
|
||||
socketIO = SocketIO('localhost', 8000)
|
||||
socketIO.emit('aaa', {'bbb': 'ccc'})
|
||||
|
||||
Emit with callback.
|
||||
.. code-block:: python
|
||||
|
||||
from socketIOClient import SocketIO
|
||||
|
||||
def on_response(arg1, arg2, arg3, arg4):
|
||||
print arg1, arg2, arg3, arg4
|
||||
|
||||
socketIO = SocketIO('localhost', 8000)
|
||||
socketIO.emit('aaa', {'bbb': 'ccc'}, on_response)
|
||||
socketIO.wait()
|
||||
|
||||
Define events.
|
||||
.. code-block:: python
|
||||
|
||||
from socketIOClient import SocketIO
|
||||
|
||||
def on_ddd(arg1, arg2, arg3, arg4):
|
||||
print arg1, arg2, arg3, arg4
|
||||
|
||||
socketIO = SocketIO('localhost', 8000)
|
||||
socketIO.on('ddd', on_ddd)
|
||||
|
||||
Define events in a namespace.
|
||||
.. code-block:: python
|
||||
|
||||
from socketIOClient import SocketIO, BaseNamespace
|
||||
|
||||
class Namespace(BaseNamespace):
|
||||
|
||||
def on_ddd(self, arg1, arg2):
|
||||
self.socketIO.emit('eee', {'fff': arg1 + arg2})
|
||||
|
||||
socketIO = SocketIO('localhost', 8000, Namespace)
|
||||
|
||||
Define standard events.
|
||||
.. code-block:: python
|
||||
|
||||
from socketIOClient import SocketIO, BaseNamespace
|
||||
|
||||
class Namespace(BaseNamespace):
|
||||
|
||||
def on_connect(self, socketIO):
|
||||
print '[Connected]'
|
||||
|
||||
def on_disconnect(self):
|
||||
print '[Disconnected]'
|
||||
|
||||
def on_error(self, name, message):
|
||||
print '[Error] %s: %s' % (name, message)
|
||||
|
||||
def on_message(self, id, message):
|
||||
print '[Message] %s: %s' % (id, message)
|
||||
|
||||
socketIO = SocketIO('localhost', 8000, Namespace)
|
||||
|
||||
Define different behavior for different channels on a single socket.
|
||||
.. code-block:: python
|
||||
|
||||
mainSocket = SocketIO('localhost', 8000, MainNamespace())
|
||||
chatSocket = mainSocket.connect('/chat', ChatNamespace())
|
||||
newsSocket = mainSocket.connect('/news', NewsNamespace())
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
This software is available under the MIT License. Please see LICENSE.txt for the full license text.
|
||||
This software is available under the MIT License.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue