Realtime comms to Arduino from web, what are the options?

For a project, I'm trying to survey the options for connecting an Arduino (+ ethernet shield) to the web for real-time telemetry and control.

I want to write a web page with some custom canvas/SVG widgets which react to the Arduino and can command it.
The widgets will need to access the Arduino via Javascript.

From what I can see, these are the options - what others exist?

  • Run a web server locally on the Arduino. The server will need to support websockets/long polling for Javascript's XmlHttpRequest

  • This is a problem, as the Arduino will be installed behind a home router, where port forwarding is not easy. There's also the problem of finding the Arduino's IP to connect to.

  • Export my data/control interface to Pachube. Then, host my widget pages on my own server along with a Pachube-to-WebSocket proxy (to sidestep the cross-domain problem)

Is there a way to provide a custom real-time widget, controlling my Arduino, without having to run my own web server?

There are many ways to do it, but the problem will be the same. Getting through your router. But this really has nothing to do with the Arduino.