blob: fd5870579ade43db1862aacf942bf87f03a47aae [file] [log] [blame]
*****************
Binary Socket
*****************
.. topic:: Introduction
This page describes how to setup the `Socket` example application for
PyAMF.
The `Socket` class in Actionscript 3.0 enables Adobe Flash Player
applications to make socket connections and to read and write raw
binary data.
The example server shows how to setup a `Socket` connection with the
`Flex SDK`_ and exchange AMF data with a :doc:`../gateways/twisted`
server.
A live demo can be found on the PyAMF blog_.
.. contents::
Download
========
Clone the PyAMF repository with:
.. code-block:: bash
git clone git://github.com/hydralabs/pyamf.git pyamf
cd doc/tutorials/examples/actionscript/socket-example
Alternatively, if you just want to take a look at the source, you can
browse_ the example online.
Gateway
=======
**Note**: Make sure you have Twisted_ >= 2.5 installed.
The Twisted socket server for the Adobe Flash Player and Python AMF clients starts on
http://localhost:8000 when you run:
.. code-block:: bash
twistd -noy timer.tac
You should see something like:
.. code-block:: bash
2008-01-07 06:03:09+0100 [-] Log opened.
2008-01-07 06:03:09+0100 [-] twistd 2.5.0 (../Python 2.5.1) starting up
2008-01-07 06:03:09+0100 [-] reactor class: <class 'twisted.internet.selectreactor.SelectReactor'>
2008-01-07 06:03:09+0100 [-] server.TimerFactory starting on 8000
2008-01-07 06:03:09+0100 [-] Starting factory <server.TimerFactory instance at 0x1414af8>
You can stop the server by pressing Ctrl-c.
If you want to run the application as a Twisted daemon process, use this command instead:
.. code-block:: bash
twistd -oy timer.tac
Clients
=======
Adobe Flash Player
------------------
You can simply open the `SWF file`_ and it will connect to http://localhost:8000.
Use the 'Start' and 'Stop' buttons to control the Python socket server that sends
the system time to the Flex application every second:
.. image:: images/binarysocket.jpg
Python
------
The Python AMF client can be started by running the following from the `python`
folder:
.. code-block:: bash
python client.py
The client will connect to the socket server on http://localhost:8000
and start sending messages:
.. code-block:: bash
Connecting to socket server on localhost:8000
Connected to server.
send request: start
2009-07-02 23:06:31.684023
2009-07-02 23:06:32.684465
2009-07-02 23:06:33.684923
2009-07-02 23:06:34.685351
2009-07-02 23:06:35.685828
2009-07-02 23:06:36.686253
send request: stop
Options
_______
When you run `python client.py --help` it will display the various options available
for this example client:
.. code-block:: bash
Usage: client.py [options]
Options:
-h, --help show this help message and exit
-p PORT, --port=PORT port number [default: 8000]
--host=HOST host address [default: localhost]
.. _Flex SDK: http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK
.. _Twisted: http://twistedmatrix.com
.. _Python: http://python.org
.. _blog: http://blog.pyamf.org/2008/01/socket-example
.. _browse: http://github.com/hydralabs/pyamf/tree/master/doc/tutorials/examples/actionscript/socket
.. _SWF file: http://github.com/hydralabs/pyamf/tree/master/doc/tutorials/examples/actionscript/socket/flex/deploy/socket.swf
.. _client: http://github.com/hydralabs/pyamf/tree/master/doc/tutorials/examples/actionscript/socket/python/client.py