Twitter and Websocket Example
=============================

The example is demonstrating how to poll a constant feed of twitter searches
and publish results in real time using web socket to a web page.

This example is already configured using a testing purpose twitter account named 'cameltweet'.
And therefore the example is ready to run out of the box.

This account is only for testing purpose, and should not be used in your custom applications.
For that you need to setup and use your own twitter account.

We have described this in more details at the Camel twitter documentation:
  http://camel.apache.org/twitter

You will need to compile this example first:
  mvn compile

To run the example type
  mvn exec:java

Then open a browser to see live twitter updates in the web page
  http://localhost:9090

To stop the example hit ctrl + c

This example is documented at
  http://camel.apache.org/twitter-websocket-example.html

If you hit any problems please let us know on the Camel Forums
  http://camel.apache.org/discussion-forums.html

Please help us make Apache Camel better - we appreciate any feedback you may
have.  Enjoy!

------------------------
The Camel riders!
