Package: thunderpush
.. image:: http://i.imgur.com/CgGL5eU.png------.. image:: https://badge.fury.io/py/thunderpush.png:target: http://badge.fury.io/py/thunderpush.. image:: https://secure.travis-ci.org/thunderpush/thunderpush.png?branch=master:target: http://travis-ci.org/thunderpush/thunderpushThunderpush is a Tornado and SockJS based push service. It providesa Beaconpush (beaconpush.com) inspired HTTP API and client.Install=======::pip install thunderpushUsage=====::usage: thunderpush [-h] [-p PORT] [-H HOST] [-v] [-d] [-V] clientkey apikeypositional arguments:clientkey             client keyapikey                server API keyoptional arguments:-h, --help            show this help message and exit-p PORT, --port PORT  binds server to custom port-H HOST, --host HOST  binds server to custom address-v, --verbose         verbose mode-d, --debug           debug mode (useful for development)-V, --version         show program's version number and exitJavaScript client=================In order to use provided by Thunderpush client, you need to include followinglines on your webpage.::<script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script><script src="thunderpush.js"></script>The only thing you have to do now is to make a connection to your Thunderpushserver in following way::<script type="text/javascript">Thunder.connect("thunder.example.com", "apikey", ["testchannel"], {log: true});Thunder.listen(function(message) { alert(message); });</script>This code is all you need to do to start receive messages pushed to the clientfrom your Thunderpush server. As you can see, we instructed Thunder clientto display logs, which can be helpful for debugging your application.For more examples of how to use Thunderpush, look into `examples <https://github.com/thunderpush/thunderpush/tree/master/examples>`_.Open-source libraries for communicating with the HTTP API=========================================================Python: `python-thunderclient <https://github.com/thunderpush/python-thunderclient>`_PHP: `php-thunderclient <https://github.com/thunderpush/php-thunderclient>`_Java: `java-thunderclient <https://github.com/Sim00n/java-thunderclient>`_Hubot: `hubot-thunderpush <https://github.com/thunderpush/hubot-thunderpush>`_Ruby: `thunderpush-gem <https://github.com/welingtonsampaio/thunderpush-gem>`_.NET: `ThunderClient.Net <https://github.com/primediabroadcasting/ThunderClient.Net>`_Using the HTTP API==================Example of interacting with Thunderpush API using cURL::curl \-X POST \-H "Content-Type: application/json" \-H "X-Thunder-Secret-Key: secretkey" \--data-ascii "\"Hello World!\"" \http://thunder.example.com/api/1.0.0/[API key]/channels/[channel]/All requests to the HTTP API must provide *X-Thunder-Secret-Key* header thatshould contain the private API key.Sending a message to a channel^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::POST /api/1.0.0/[API key]/channels/[channel]/Message should be sent as the body of the request. Only valid JSON bodywill be accepted.Getting number of users online^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::GET /api/1.0.0/[API key]/users/Checking presence of a user^^^^^^^^^^^^^^^^^^^^^^^^^^^::GET /api/1.0.0/[API key]/users/[user id]/Sending a message to a user^^^^^^^^^^^^^^^^^^^^^^^^^^^^::POST /api/1.0.0/[API key]/users/[user id]/Message should be sent as the body of the request. Only valid JSON bodywill be accepted.Forcing logout of a user^^^^^^^^^^^^^^^^^^^^^^^^::DELETE /api/1.0.0/[API key]/users/[user id]/Always returns 204 http code.Retrieving list of users in a channel^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::GET /api/1.0.0/[API key]/channels/[channel]/JavaScript client API=====================Connecting to the server^^^^^^^^^^^^^^^^^^^^^^^^::Thunder.connect(server, apiKey, channels, options)Connects to the Thunderpush server and starts listening for incommingmessages.serverAdress of your Thunderpush server.apiKeyPublic api key.channelsArray of channels you want to subscribe to.optionsObject with optional settings you may pass to Thunder:logSet it to true if you want to activate verbose mode. This will turn onSockJS logs as well.userSet it to override the client generated user id.protocolSet it to "https" if you want to use it instead of "http".Listening for messages^^^^^^^^^^^^^^^^^^^^^^::Thunder.listen(handler)Registers callback function that will receive incomming messages. You canregister as many handlers you want. Handler function should acceptone argument which is the message itself.Getting high CPU usage?^^^^^^^^^^^^^^^^^^^^^^^Before giving up on thunderpush, check it's logs and look forerrors like this one `error: [Errno 24] Too many open files`. If you're seeing them,it means that you've reached the limit of open file descriptors on your system.The only thing you need to do is to raise the limit. Following SO answer willtell you how to do it: http://stackoverflow.com/a/4578356/250162 Then simplyrestart thunderpush, forget about the problem and get a cold one!